components/libpcap/patches/20-zonenameprefix.patch
author Ron Jordan <ron.jordan@oracle.com>
Tue, 22 Jan 2013 14:45:57 -0800
branchs11u1-sru
changeset 2472 a1822222111d
parent 431 e60e527b8179
permissions -rw-r--r--
15821251 SUNBT7203499 openssl pkcs11 decrypt shows annoying messages 15809484 SUNBT7190828 Apache webserver crashes in 'ENGINE_load_pk11' when pkcs11 not conf
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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",