author | Ron Jordan <ron.jordan@oracle.com> |
Tue, 22 Jan 2013 14:45:57 -0800 | |
branch | s11u1-sru |
changeset 2472 | a1822222111d |
parent 431 | e60e527b8179 |
permissions | -rw-r--r-- |
431
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
1 |
--- libpcap-1.1.1/pcap-bpf-patch1.c Mon Jul 18 16:40:47 2011 |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
2 |
+++ patched-libpcap-1.1.1/pcap-bpf.c Mon Jul 18 16:38:14 2011 |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
3 |
@@ -155,6 +155,10 @@ |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
4 |
|
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
5 |
#endif /* BIOCGDLTLIST */ |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
6 |
|
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
7 |
+#if defined(sun) && defined(LIFNAMSIZ) && defined(lifr_zoneid) |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
8 |
+#include <zone.h> |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
9 |
+#endif |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
10 |
+ |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
11 |
/* |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
12 |
* We include the OS's <net/bpf.h>, not our "pcap/bpf.h", so we probably |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
13 |
* don't get DLT_DOCSIS defined. |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
14 |
@@ -1393,6 +1397,7 @@ |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
15 |
int status = 0; |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
16 |
int fd; |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
17 |
#ifdef LIFNAMSIZ |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
18 |
+ char *zonesep; |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
19 |
struct lifreq ifr; |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
20 |
char *ifrname = ifr.lifr_name; |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
21 |
const size_t ifnamsiz = sizeof(ifr.lifr_name); |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
22 |
@@ -1447,6 +1452,29 @@ |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
23 |
goto bad; |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
24 |
} |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
25 |
|
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
26 |
+#if defined(LIFNAMSIZ) && defined(ZONENAME_MAX) && defined(lifr_zoneid) |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
27 |
+ /* |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
28 |
+ * Check if the given source network device has a '/' separated |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
29 |
+ * zonename prefix string. The zonename prefixed source device |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
30 |
+ * can be used by libpcap consumers to capture network traffic |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
31 |
+ * in non-global zones from the global zone on Solaris 11 and |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
32 |
+ * above. If the zonename prefix is present then we strip the |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
33 |
+ * prefix and pass the zone ID as part of lifr_zoneid. |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
34 |
+ */ |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
35 |
+ if ((zonesep = strchr(p->opt.source, '/')) != NULL) { |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
36 |
+ char zonename[ZONENAME_MAX]; |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
37 |
+ int znamelen; |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
38 |
+ char *lnamep; |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
39 |
+ |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
40 |
+ znamelen = zonesep - p->opt.source; |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
41 |
+ (void) strlcpy(zonename, p->opt.source, znamelen + 1); |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
42 |
+ lnamep = strdup(zonesep + 1); |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
43 |
+ ifr.lifr_zoneid = getzoneidbyname(zonename); |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
44 |
+ free(p->opt.source); |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
45 |
+ p->opt.source = lnamep; |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
46 |
+ } |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
47 |
+#endif |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
48 |
+ |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
49 |
p->md.device = strdup(p->opt.source); |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
50 |
if (p->md.device == NULL) { |
e60e527b8179
7068506 Move libpcap from SFW to userland
Rishi Srivatsavai <Rishi.Srivatsavai@oracle.com>
parents:
diff
changeset
|
51 |
snprintf(p->errbuf, PCAP_ERRBUF_SIZE, "strdup: %s", |