Thu May 17 14:37:07 2012 UTC ()
net/net-snmp: Fix IPv6 option on DragonFly

Another victim of _KERNEL STRUCTURES...


(marino)
diff -r1.65 -r1.66 pkgsrc/net/net-snmp/distinfo
diff -r1.7 -r1.8 pkgsrc/net/net-snmp/patches/patch-de

cvs diff -r1.65 -r1.66 pkgsrc/net/net-snmp/distinfo (expand / switch to unified diff)

--- pkgsrc/net/net-snmp/distinfo 2012/05/17 12:56:17 1.65
+++ pkgsrc/net/net-snmp/distinfo 2012/05/17 14:37:07 1.66
@@ -1,40 +1,40 @@ @@ -1,40 +1,40 @@
1$NetBSD: distinfo,v 1.65 2012/05/17 12:56:17 spz Exp $ 1$NetBSD: distinfo,v 1.66 2012/05/17 14:37:07 marino Exp $
2 2
3SHA1 (net-snmp-5.6.1.1.tar.gz) = ec88ba3e0dff4d1b3d342ccebb48ea84c9fa6fa9 3SHA1 (net-snmp-5.6.1.1.tar.gz) = ec88ba3e0dff4d1b3d342ccebb48ea84c9fa6fa9
4RMD160 (net-snmp-5.6.1.1.tar.gz) = 9a4a83f7fe9431a0694b5fee33866ccea80fcab4 4RMD160 (net-snmp-5.6.1.1.tar.gz) = 9a4a83f7fe9431a0694b5fee33866ccea80fcab4
5Size (net-snmp-5.6.1.1.tar.gz) = 5937279 bytes 5Size (net-snmp-5.6.1.1.tar.gz) = 5937279 bytes
6SHA1 (patch-aa) = 699f6a6770c51c8976d8ec352ad213893e749032 6SHA1 (patch-aa) = 699f6a6770c51c8976d8ec352ad213893e749032
7SHA1 (patch-ab) = d23ddbce52b54462ea2f7c695533a41eaf0046ee 7SHA1 (patch-ab) = d23ddbce52b54462ea2f7c695533a41eaf0046ee
8SHA1 (patch-ac) = f947f2fb88cee7bf92b5aa8cfe94ade079df1a66 8SHA1 (patch-ac) = f947f2fb88cee7bf92b5aa8cfe94ade079df1a66
9SHA1 (patch-ae) = 54541bffecdbf4c526280bc82ffd370a59963d88 9SHA1 (patch-ae) = 54541bffecdbf4c526280bc82ffd370a59963d88
10SHA1 (patch-af) = d7641e502fd0a2969fa838fc67244cdfc6995369 10SHA1 (patch-af) = d7641e502fd0a2969fa838fc67244cdfc6995369
11SHA1 (patch-ag) = 8f9dedcf741c4b0ea2c0150c8b0a22747ca8a313 11SHA1 (patch-ag) = 8f9dedcf741c4b0ea2c0150c8b0a22747ca8a313
12SHA1 (patch-agent_mibgroup_agent_extend.c) = b3b04c51e7059426963fdb4712a711e2da053a28 12SHA1 (patch-agent_mibgroup_agent_extend.c) = b3b04c51e7059426963fdb4712a711e2da053a28
13SHA1 (patch-ah) = 7cea4194c858d7a8a9093eaf4426404e9202c3f1 13SHA1 (patch-ah) = 7cea4194c858d7a8a9093eaf4426404e9202c3f1
14SHA1 (patch-ai) = 1eb3b72dcfff90c8e973590265bdb1c07b717eaa 14SHA1 (patch-ai) = 1eb3b72dcfff90c8e973590265bdb1c07b717eaa
15SHA1 (patch-aj) = e3337d01e96cc0739dbf3b1c7bde44d1126c32ae 15SHA1 (patch-aj) = e3337d01e96cc0739dbf3b1c7bde44d1126c32ae
16SHA1 (patch-ak) = 8a7b26b29dcce292355c8239d6b5a2b9fe0b3253 16SHA1 (patch-ak) = 8a7b26b29dcce292355c8239d6b5a2b9fe0b3253
17SHA1 (patch-al) = 468394dc540329449c074a6f19ab3e0287041607 17SHA1 (patch-al) = 468394dc540329449c074a6f19ab3e0287041607
18SHA1 (patch-am) = db771145f72a043beeb589e450617e42ca5d5c00 18SHA1 (patch-am) = db771145f72a043beeb589e450617e42ca5d5c00
19SHA1 (patch-an) = 6f47b44697f22d322e35b83d47aa5f7383a8c7cd 19SHA1 (patch-an) = 6f47b44697f22d322e35b83d47aa5f7383a8c7cd
20SHA1 (patch-ao) = 989b410de3a28c37a50581a6f8d109f448b2b421 20SHA1 (patch-ao) = 989b410de3a28c37a50581a6f8d109f448b2b421
21SHA1 (patch-ap) = 36032fefe04671a0a5f7db765bdd2115963d01f1 21SHA1 (patch-ap) = 36032fefe04671a0a5f7db765bdd2115963d01f1
22SHA1 (patch-aq) = b639bceac59a987ec779fe472fa4e97aa7b24204 22SHA1 (patch-aq) = b639bceac59a987ec779fe472fa4e97aa7b24204
23SHA1 (patch-da) = 7466445c8388492344acdee236b153cb5f5b45e1 23SHA1 (patch-da) = 7466445c8388492344acdee236b153cb5f5b45e1
24SHA1 (patch-db) = bec0bee1860ee42ba64b4c07df2280e206eaf582 24SHA1 (patch-db) = bec0bee1860ee42ba64b4c07df2280e206eaf582
25SHA1 (patch-dc) = f84beba7fae731bb0e38b9635dd2f7009c3659aa 25SHA1 (patch-dc) = f84beba7fae731bb0e38b9635dd2f7009c3659aa
26SHA1 (patch-dd) = 08da0d1da485959549ac461e5cbb7030f800e643 26SHA1 (patch-dd) = 08da0d1da485959549ac461e5cbb7030f800e643
27SHA1 (patch-de) = 605215c1604d14a7ac96d643ef685778df3517fb 27SHA1 (patch-de) = 532045f8e509b4df0acc46bf5e778d10d3b36012
28SHA1 (patch-df) = 8851ce05e61345496d2abe65cac2896268d72624 28SHA1 (patch-df) = 8851ce05e61345496d2abe65cac2896268d72624
29SHA1 (patch-dg) = 6e6e396add0613dd76e3b8618008a7ebf8103c7c 29SHA1 (patch-dg) = 6e6e396add0613dd76e3b8618008a7ebf8103c7c
30SHA1 (patch-dh) = 41530526190fb9a0419db1c604c2ac6025417706 30SHA1 (patch-dh) = 41530526190fb9a0419db1c604c2ac6025417706
31SHA1 (patch-di) = e0e1039c1adbf10ae56c50998ff74b39193e7348 31SHA1 (patch-di) = e0e1039c1adbf10ae56c50998ff74b39193e7348
32SHA1 (patch-dl) = 0619c8c9fc2e382a57fc127fa6bc52121d2bf288 32SHA1 (patch-dl) = 0619c8c9fc2e382a57fc127fa6bc52121d2bf288
33SHA1 (patch-dm) = 5c990fb3286453534d9c02fa1ab6eda76abd9d33 33SHA1 (patch-dm) = 5c990fb3286453534d9c02fa1ab6eda76abd9d33
34SHA1 (patch-dn) = 1410274fc6774e4aa043485a21b97c3b644c46b7 34SHA1 (patch-dn) = 1410274fc6774e4aa043485a21b97c3b644c46b7
35SHA1 (patch-do) = 5144514d78c5cdd1f289749fc958e0d491c9ba98 35SHA1 (patch-do) = 5144514d78c5cdd1f289749fc958e0d491c9ba98
36SHA1 (patch-dp) = 3ecdfa78a5c7a86715d3fd3ab8bbd0208a0d685d 36SHA1 (patch-dp) = 3ecdfa78a5c7a86715d3fd3ab8bbd0208a0d685d
37SHA1 (patch-dq) = 75d25b51db74151e4956498c9730006b8ff57992 37SHA1 (patch-dq) = 75d25b51db74151e4956498c9730006b8ff57992
38SHA1 (patch-dr) = 6a0c80e2edea934917939c2745bf86e2e7142bf5 38SHA1 (patch-dr) = 6a0c80e2edea934917939c2745bf86e2e7142bf5
39SHA1 (patch-ds) = 3fbd86bffb76cbf11bc8c958320dc669c1b750ec 39SHA1 (patch-ds) = 3fbd86bffb76cbf11bc8c958320dc669c1b750ec
40SHA1 (patch-dt) = f2a45e4fc2653d7b8c38c6f9d5e748b78b7108df 40SHA1 (patch-dt) = f2a45e4fc2653d7b8c38c6f9d5e748b78b7108df

cvs diff -r1.7 -r1.8 pkgsrc/net/net-snmp/patches/Attic/patch-de (expand / switch to unified diff)

--- pkgsrc/net/net-snmp/patches/Attic/patch-de 2011/05/27 10:55:25 1.7
+++ pkgsrc/net/net-snmp/patches/Attic/patch-de 2012/05/17 14:37:07 1.8
@@ -1,45 +1,59 @@ @@ -1,45 +1,59 @@
1$NetBSD: patch-de,v 1.7 2011/05/27 10:55:25 adam Exp $ 1$NetBSD: patch-de,v 1.8 2012/05/17 14:37:07 marino Exp $
2 2
3--- agent/mibgroup/mibII/ipv6.c.orig 2010-12-08 13:17:10.000000000 +0000 3--- agent/mibgroup/mibII/ipv6.c.orig 2010-12-08 13:17:10.000000000 +0000
4+++ agent/mibgroup/mibII/ipv6.c 4+++ agent/mibgroup/mibII/ipv6.c
5@@ -11,7 +11,7 @@ 5@@ -11,7 +11,7 @@
6 #include <sys/types.h> 6 #include <sys/types.h>
7 #include <sys/param.h> 7 #include <sys/param.h>
8 #include <sys/socket.h> 8 #include <sys/socket.h>
9-#if (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin) 9-#if (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin)
10+#if defined(freebsd3) || defined(darwin) 10+#if defined(freebsd3) || defined(darwin)
11 # if HAVE_SYS_SOCKETVAR_H 11 # if HAVE_SYS_SOCKETVAR_H
12 # include <sys/socketvar.h> 12 # include <sys/socketvar.h>
13 # endif 13 # endif
14@@ -80,7 +80,7 @@ 14@@ -51,7 +51,13 @@
 15 #endif
 16 #include <net/if.h>
 17 #if HAVE_NET_IF_VAR_H
 18+# ifdef __DragonFly__
 19+# define _KERNEL_STRUCTURES
 20+# endif
 21 #include <net/if_var.h>
 22+# ifdef __DragonFly__
 23+# undef _KERNEL_STRUCTURES
 24+# endif
 25 #endif
 26 #if HAVE_NET_IF_DL_H
 27 #include <net/if_dl.h>
 28@@ -80,7 +86,7 @@
15 # include <netinet6/ip6_var.h> 29 # include <netinet6/ip6_var.h>
16 #endif 30 #endif
17 #include <net/route.h> 31 #include <net/route.h>
18-#if (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin) 32-#if (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin)
19+#if defined(freebsd3) || defined(darwin) 33+#if defined(freebsd3) || defined(darwin)
20 # if HAVE_NETINET_IN_PCB_H 34 # if HAVE_NETINET_IN_PCB_H
21 # include <netinet/in_pcb.h> 35 # include <netinet/in_pcb.h>
22 # endif 36 # endif
23@@ -616,7 +616,7 @@ if_getifnet(int idx, struct ifnet *resul 37@@ -616,7 +622,7 @@ if_getifnet(int idx, struct ifnet *resul
24 memcpy(result, &tmp, sizeof(tmp)); 38 memcpy(result, &tmp, sizeof(tmp));
25 return 0; 39 return 0;
26 } 40 }
27-#if (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin) 41-#if (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin)
28+#if defined(freebsd3) || defined(darwin) 42+#if defined(freebsd3) || defined(darwin)
29 q = (caddr_t) TAILQ_NEXT(&tmp, if_link); 43 q = (caddr_t) TAILQ_NEXT(&tmp, if_link);
30 #else 44 #else
31 # if defined(__NetBSD__) || defined(__OpenBSD__) 45 # if defined(__NetBSD__) || defined(__OpenBSD__)
32@@ -846,13 +846,36 @@ var_ifv6Entry(register struct variable * 46@@ -846,13 +852,36 @@ var_ifv6Entry(register struct variable *
33 { 47 {
34 struct ifnet ifnet; 48 struct ifnet ifnet;
35 struct ifaddr ifaddr; 49 struct ifaddr ifaddr;
36+#if defined(__DragonFly__) && __DragonFly_version >= 197700 50+#if defined(__DragonFly__) && __DragonFly_version >= 197700
37+ struct ifaddr_container ifac; 51+ struct ifaddr_container ifac;
38+ struct ifaddrhead head; 52+ struct ifaddrhead head;
39+#endif 53+#endif
40 static struct sockaddr_dl sdl; 54 static struct sockaddr_dl sdl;
41 caddr_t ifa; 55 caddr_t ifa;
42  56
43 if (if_getifnet(interface, &ifnet) < 0) 57 if (if_getifnet(interface, &ifnet) < 0)
44 break; 58 break;
45-#if (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin) 59-#if (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin)
@@ -57,62 +71,62 @@ $NetBSD: patch-de,v 1.7 2011/05/27 10:55 @@ -57,62 +71,62 @@ $NetBSD: patch-de,v 1.7 2011/05/27 10:55
57+ DEBUGMSGTL(("mibII/ipv6:var_ipv6", "klookup ifac failed\n")); 71+ DEBUGMSGTL(("mibII/ipv6:var_ipv6", "klookup ifac failed\n"));
58+ break; 72+ break;
59+ } 73+ }
60+ ifa = (caddr_t)ifac.ifa; 74+ ifa = (caddr_t)ifac.ifa;
61+ } else { 75+ } else {
62+ ifa = NULL; 76+ ifa = NULL;
63+ } 77+ }
64+# else 78+# else
65 ifa = (caddr_t) TAILQ_FIRST(&ifnet.if_addrhead); 79 ifa = (caddr_t) TAILQ_FIRST(&ifnet.if_addrhead);
66+# endif 80+# endif
67 #else 81 #else
68 # if defined(__NetBSD__) || defined(__OpenBSD__) 82 # if defined(__NetBSD__) || defined(__OpenBSD__)
69 ifa = (caddr_t) TAILQ_FIRST(&ifnet.if_addrlist); 83 ifa = (caddr_t) TAILQ_FIRST(&ifnet.if_addrlist);
70@@ -878,8 +901,20 @@ var_ifv6Entry(register struct variable * 84@@ -878,8 +907,20 @@ var_ifv6Entry(register struct variable *
71 *var_len = sdl.sdl_alen; 85 *var_len = sdl.sdl_alen;
72 return (u_char *) (sdl.sdl_data + sdl.sdl_nlen); 86 return (u_char *) (sdl.sdl_data + sdl.sdl_nlen);
73 } 87 }
74-#if (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin) 88-#if (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin)
75+#if defined(freebsd3) || defined(darwin) 89+#if defined(freebsd3) || defined(darwin)
76+# if defined(__DragonFly__) && __DragonFly_version >= 197700 90+# if defined(__DragonFly__) && __DragonFly_version >= 197700
77+ if (TAILQ_NEXT(&ifac, ifa_link) == NULL) { 91+ if (TAILQ_NEXT(&ifac, ifa_link) == NULL) {
78+ ifa = NULL; 92+ ifa = NULL;
79+ } else { 93+ } else {
80+ if (!NETSNMP_KLOOKUP(TAILQ_NEXT(&ifac, ifa_link), (char *)&ifac, sizeof(ifac))) { 94+ if (!NETSNMP_KLOOKUP(TAILQ_NEXT(&ifac, ifa_link), (char *)&ifac, sizeof(ifac))) {
81+ DEBUGMSGTL(("mibII/ipv6:var_ipv6", "klookup ifac next failed\n")); 95+ DEBUGMSGTL(("mibII/ipv6:var_ipv6", "klookup ifac next failed\n"));
82+ break; 96+ break;
83+ } 97+ }
84+ ifa = (caddr_t)ifac.ifa; 98+ ifa = (caddr_t)ifac.ifa;
85+ } 99+ }
86+# else 100+# else
87 ifa = (caddr_t) TAILQ_NEXT(&ifaddr, ifa_link); 101 ifa = (caddr_t) TAILQ_NEXT(&ifaddr, ifa_link);
88+# endif 102+# endif
89 #else 103 #else
90 # if defined(__NetBSD__) || defined(__OpenBSD__) 104 # if defined(__NetBSD__) || defined(__OpenBSD__)
91 ifa = (caddr_t) TAILQ_NEXT(&ifaddr, ifa_list); 105 ifa = (caddr_t) TAILQ_NEXT(&ifaddr, ifa_list);
92@@ -1285,7 +1320,11 @@ var_udp6(register struct variable * vp, 106@@ -1285,7 +1326,11 @@ var_udp6(register struct variable * vp,
93 #if defined(__NetBSD__) && __NetBSD_Version__ >= 106250000 /*1.6Y*/ 107 #if defined(__NetBSD__) && __NetBSD_Version__ >= 106250000 /*1.6Y*/
94 struct inpcbtable udbtable; 108 struct inpcbtable udbtable;
95 caddr_t first; 109 caddr_t first;
96-#elif (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin) 110-#elif (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin)
97+#elif defined(dragonfly) 111+#elif defined(dragonfly)
98+ char *sysctl_buf; 112+ char *sysctl_buf;
99+ struct xinpcb *xig; 113+ struct xinpcb *xig;
100+ size_t sysctl_len; 114+ size_t sysctl_len;
101+#elif defined(freebsd3) || defined(darwin) 115+#elif defined(freebsd3) || defined(darwin)
102 char *sysctl_buf; 116 char *sysctl_buf;
103 struct xinpgen *xig, *oxig; 117 struct xinpgen *xig, *oxig;
104 #else 118 #else
105@@ -1300,10 +1339,31 @@ var_udp6(register struct variable * vp, 119@@ -1300,10 +1345,31 @@ var_udp6(register struct variable * vp,
106 if (!auto_nlist("udbtable", (char *) &udbtable, sizeof(udbtable))) 120 if (!auto_nlist("udbtable", (char *) &udbtable, sizeof(udbtable)))
107 return NULL; 121 return NULL;
108 first = p = (caddr_t)udbtable.inpt_queue.cqh_first; 122 first = p = (caddr_t)udbtable.inpt_queue.cqh_first;
109-#elif !(defined(__FreeBSD__) && __FreeBSD__ >= 3) && !defined(darwin) 123-#elif !(defined(__FreeBSD__) && __FreeBSD__ >= 3) && !defined(darwin)
110+#elif !defined(freebsd3) && !defined(darwin) 124+#elif !defined(freebsd3) && !defined(darwin)
111 if (!auto_nlist("udb6", (char *) &udb6, sizeof(udb6))) 125 if (!auto_nlist("udb6", (char *) &udb6, sizeof(udb6)))
112 return NULL; 126 return NULL;
113 p = (caddr_t) udb6.in6p_next; 127 p = (caddr_t) udb6.in6p_next;
114+#elif defined(dragonfly) 128+#elif defined(dragonfly)
115+ { 129+ {
116+ const char *udblist = "net.inet.udp.pcblist"; 130+ const char *udblist = "net.inet.udp.pcblist";
117+ const char *pp = udblist; 131+ const char *pp = udblist;
118+ 132+
@@ -125,148 +139,148 @@ $NetBSD: patch-de,v 1.7 2011/05/27 10:55 @@ -125,148 +139,148 @@ $NetBSD: patch-de,v 1.7 2011/05/27 10:55
125+ free(sysctl_buf); 139+ free(sysctl_buf);
126+ return NULL; 140+ return NULL;
127+ } 141+ }
128+ xig = (struct xinpcb *) sysctl_buf; 142+ xig = (struct xinpcb *) sysctl_buf;
129+ if (xig->xi_len != sizeof(*xig)) { 143+ if (xig->xi_len != sizeof(*xig)) {
130+ free(sysctl_buf); 144+ free(sysctl_buf);
131+ return NULL; 145+ return NULL;
132+ } 146+ }
133+ p = (caddr_t) ((char *) xig); /* silence compiler warning */ 147+ p = (caddr_t) ((char *) xig); /* silence compiler warning */
134+ } 148+ }
135 #else 149 #else
136 { 150 {
137 const char *udblist = "net.inet.udp.pcblist"; 151 const char *udblist = "net.inet.udp.pcblist";
138@@ -1331,15 +1391,17 @@ var_udp6(register struct variable * vp, 152@@ -1331,15 +1397,17 @@ var_udp6(register struct variable * vp,
139 while ( 153 while (
140 #if defined(__NetBSD__) && __NetBSD_Version__ >= 106250000 /*1.6Y*/ 154 #if defined(__NetBSD__) && __NetBSD_Version__ >= 106250000 /*1.6Y*/
141 p && p != first 155 p && p != first
142-#elif !(defined(__FreeBSD__) && __FreeBSD__ >= 3) && !defined(darwin) 156-#elif !(defined(__FreeBSD__) && __FreeBSD__ >= 3) && !defined(darwin)
143+#elif !defined(freebsd3) && !defined(darwin) 157+#elif !defined(freebsd3) && !defined(darwin)
144 p && (u_long) p != auto_nlist_value("udb6") 158 p && (u_long) p != auto_nlist_value("udb6")
145+#elif defined(dragonfly) 159+#elif defined(dragonfly)
146+ (char *)xig + xig->xi_len <= sysctl_buf + sysctl_len 160+ (char *)xig + xig->xi_len <= sysctl_buf + sysctl_len
147 #else 161 #else
148 xig->xig_len > sizeof(struct xinpgen) 162 xig->xig_len > sizeof(struct xinpgen)
149 #endif 163 #endif
150 ) { 164 ) {
151 DEBUGMSGTL(("mibII/ipv6", "looping: p=%x\n", p)); 165 DEBUGMSGTL(("mibII/ipv6", "looping: p=%x\n", p));
152  166
153-#if !(defined(__FreeBSD__) && __FreeBSD__ >= 3) && !defined(darwin) 167-#if !(defined(__FreeBSD__) && __FreeBSD__ >= 3) && !defined(darwin)
154+#if !defined(freebsd3) && !defined(darwin) 168+#if !defined(freebsd3) && !defined(darwin)
155 if (!NETSNMP_KLOOKUP(p, (char *) &in6pcb, sizeof(in6pcb))) { 169 if (!NETSNMP_KLOOKUP(p, (char *) &in6pcb, sizeof(in6pcb))) {
156 DEBUGMSGTL(("mibII/ipv6", "klookup fail for udb6 at %x\n", 170 DEBUGMSGTL(("mibII/ipv6", "klookup fail for udb6 at %x\n",
157 p)); 171 p));
158@@ -1352,7 +1414,7 @@ var_udp6(register struct variable * vp, 172@@ -1352,7 +1420,7 @@ var_udp6(register struct variable * vp,
159 #if defined(__NetBSD__) && __NetBSD_Version__ >= 106250000 /*1.6Y*/ 173 #if defined(__NetBSD__) && __NetBSD_Version__ >= 106250000 /*1.6Y*/
160 if (in6pcb.in6p_af != AF_INET6) 174 if (in6pcb.in6p_af != AF_INET6)
161 goto skip; 175 goto skip;
162-#elif (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin) 176-#elif (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin)
163+#elif defined(freebsd3) || defined(darwin) 177+#elif defined(freebsd3) || defined(darwin)
164 if (0 == (in6pcb.inp_vflag & INP_IPV6)) 178 if (0 == (in6pcb.inp_vflag & INP_IPV6))
165 goto skip; 179 goto skip;
166 #endif 180 #endif
167@@ -1395,13 +1457,15 @@ var_udp6(register struct variable * vp, 181@@ -1395,13 +1463,15 @@ var_udp6(register struct variable * vp,
168 skip: 182 skip:
169 #if defined(__NetBSD__) && __NetBSD_Version__ >= 106250000 /*1.6Y*/ 183 #if defined(__NetBSD__) && __NetBSD_Version__ >= 106250000 /*1.6Y*/
170 p = (caddr_t)in6pcb.in6p_queue.cqe_next; 184 p = (caddr_t)in6pcb.in6p_queue.cqe_next;
171-#elif !(defined(__FreeBSD__) && __FreeBSD__ >= 3) && !defined(darwin) 185-#elif !(defined(__FreeBSD__) && __FreeBSD__ >= 3) && !defined(darwin)
172+#elif !defined(freebsd3) && !defined(darwin) 186+#elif !defined(freebsd3) && !defined(darwin)
173 p = (caddr_t) in6pcb.in6p_next; 187 p = (caddr_t) in6pcb.in6p_next;
174+#elif defined(__DragonFly__) 188+#elif defined(__DragonFly__)
175+ xig = (struct xinpcb *) ((char *) xig + xig->xi_len); 189+ xig = (struct xinpcb *) ((char *) xig + xig->xi_len);
176 #else 190 #else
177 xig = (struct xinpgen *) ((char *) xig + xig->xig_len); 191 xig = (struct xinpgen *) ((char *) xig + xig->xig_len);
178 #endif 192 #endif
179 } 193 }
180-#if (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin) 194-#if (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin)
181+#if defined(freebsd3) || defined(darwin) 195+#if defined(freebsd3) || defined(darwin)
182 free(sysctl_buf); 196 free(sysctl_buf);
183 #endif 197 #endif
184 DEBUGMSGTL(("mibII/ipv6", "found=%d\n", found)); 198 DEBUGMSGTL(("mibII/ipv6", "found=%d\n", found));
185@@ -1460,7 +1524,7 @@ var_tcp6(register struct variable * vp, 199@@ -1460,7 +1530,7 @@ var_tcp6(register struct variable * vp,
186 #if defined(__NetBSD__) && __NetBSD_Version__ >= 106250000 /*1.6Y*/ 200 #if defined(__NetBSD__) && __NetBSD_Version__ >= 106250000 /*1.6Y*/
187 struct inpcbtable tcbtable; 201 struct inpcbtable tcbtable;
188 caddr_t first; 202 caddr_t first;
189-#elif (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin) 203-#elif (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin)
190+#elif defined(freebsd3) || defined(darwin) 204+#elif defined(freebsd3) || defined(darwin)
191 char *sysctl_buf; 205 char *sysctl_buf;
192 struct xinpgen *xig, *oxig; 206 struct xinpgen *xig, *oxig;
193 #else 207 #else
194@@ -1490,7 +1554,7 @@ var_tcp6(register struct variable * vp, 208@@ -1490,7 +1560,7 @@ var_tcp6(register struct variable * vp,
195 if (!auto_nlist("tcbtable", (char *) &tcbtable, sizeof(tcbtable))) 209 if (!auto_nlist("tcbtable", (char *) &tcbtable, sizeof(tcbtable)))
196 return NULL; 210 return NULL;
197 first = p = (caddr_t)tcbtable.inpt_queue.cqh_first; 211 first = p = (caddr_t)tcbtable.inpt_queue.cqh_first;
198-#elif !(defined(__FreeBSD__) && __FreeBSD__ >= 3) && !defined(darwin) 212-#elif !(defined(__FreeBSD__) && __FreeBSD__ >= 3) && !defined(darwin)
199+#elif !defined(freebsd3) && !defined(darwin) 213+#elif !defined(freebsd3) && !defined(darwin)
200 if (!auto_nlist("tcb6", (char *) &tcb6, sizeof(tcb6))) 214 if (!auto_nlist("tcb6", (char *) &tcb6, sizeof(tcb6)))
201 return NULL; 215 return NULL;
202 p = (caddr_t) tcb6.in6p_next; 216 p = (caddr_t) tcb6.in6p_next;
203@@ -1521,7 +1585,7 @@ var_tcp6(register struct variable * vp, 217@@ -1521,7 +1591,7 @@ var_tcp6(register struct variable * vp,
204 while ( 218 while (
205 #if defined(__NetBSD__) && __NetBSD_Version__ >= 106250000 /*1.6Y*/ 219 #if defined(__NetBSD__) && __NetBSD_Version__ >= 106250000 /*1.6Y*/
206 p && p != first 220 p && p != first
207-#elif !(defined(__FreeBSD__) && __FreeBSD__ >= 3) && !defined(darwin) 221-#elif !(defined(__FreeBSD__) && __FreeBSD__ >= 3) && !defined(darwin)
208+#elif !defined(freebsd3) && !defined(darwin) 222+#elif !defined(freebsd3) && !defined(darwin)
209 p && (u_long) p != auto_nlist_value("tcb6") 223 p && (u_long) p != auto_nlist_value("tcb6")
210 #else 224 #else
211 xig->xig_len > sizeof(struct xinpgen) 225 xig->xig_len > sizeof(struct xinpgen)
212@@ -1529,7 +1593,7 @@ var_tcp6(register struct variable * vp, 226@@ -1529,7 +1599,7 @@ var_tcp6(register struct variable * vp,
213 ) { 227 ) {
214 DEBUGMSGTL(("mibII/ipv6", "looping: p=%x\n", p)); 228 DEBUGMSGTL(("mibII/ipv6", "looping: p=%x\n", p));
215  229
216-#if !(defined(__FreeBSD__) && __FreeBSD__ >= 3) && !defined(darwin) 230-#if !(defined(__FreeBSD__) && __FreeBSD__ >= 3) && !defined(darwin)
217+#if !defined(freebsd3) && !defined(darwin) 231+#if !defined(freebsd3) && !defined(darwin)
218 if (!NETSNMP_KLOOKUP(p, (char *) &in6pcb, sizeof(in6pcb))) { 232 if (!NETSNMP_KLOOKUP(p, (char *) &in6pcb, sizeof(in6pcb))) {
219 DEBUGMSGTL(("mibII/ipv6", "klookup fail for tcb6 at %x\n", 233 DEBUGMSGTL(("mibII/ipv6", "klookup fail for tcb6 at %x\n",
220 p)); 234 p));
221@@ -1542,7 +1606,7 @@ var_tcp6(register struct variable * vp, 235@@ -1542,7 +1612,7 @@ var_tcp6(register struct variable * vp,
222 #if defined(__NetBSD__) && __NetBSD_Version__ >= 106250000 /*1.6Y*/ 236 #if defined(__NetBSD__) && __NetBSD_Version__ >= 106250000 /*1.6Y*/
223 if (in6pcb.in6p_af != AF_INET6) 237 if (in6pcb.in6p_af != AF_INET6)
224 goto skip; 238 goto skip;
225-#elif (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin) 239-#elif (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin)
226+#elif defined(freebsd3) || defined(darwin) 240+#elif defined(freebsd3) || defined(darwin)
227 if (0 == (in6pcb.inp_vflag & INP_IPV6)) 241 if (0 == (in6pcb.inp_vflag & INP_IPV6))
228 goto skip; 242 goto skip;
229 #endif 243 #endif
230@@ -1599,13 +1663,13 @@ var_tcp6(register struct variable * vp, 244@@ -1599,13 +1669,13 @@ var_tcp6(register struct variable * vp,
231 skip: 245 skip:
232 #if defined(__NetBSD__) && __NetBSD_Version__ >= 106250000 /*1.6Y*/ 246 #if defined(__NetBSD__) && __NetBSD_Version__ >= 106250000 /*1.6Y*/
233 p = (caddr_t)in6pcb.in6p_queue.cqe_next; 247 p = (caddr_t)in6pcb.in6p_queue.cqe_next;
234-#elif !(defined(__FreeBSD__) && __FreeBSD__ >= 3) && !defined(darwin) 248-#elif !(defined(__FreeBSD__) && __FreeBSD__ >= 3) && !defined(darwin)
235+#elif !defined(freebsd3) && !defined(darwin) 249+#elif !defined(freebsd3) && !defined(darwin)
236 p = (caddr_t) in6pcb.in6p_next; 250 p = (caddr_t) in6pcb.in6p_next;
237 #else 251 #else
238 xig = (struct xinpgen *) ((char *) xig + xig->xig_len); 252 xig = (struct xinpgen *) ((char *) xig + xig->xig_len);
239 #endif 253 #endif
240 } 254 }
241-#if (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin) 255-#if (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin)
242+#if defined(freebsd3) || defined(darwin) 256+#if defined(freebsd3) || defined(darwin)
243 free(sysctl_buf); 257 free(sysctl_buf);
244 #endif 258 #endif
245 DEBUGMSGTL(("mibII/ipv6", "found=%d\n", found)); 259 DEBUGMSGTL(("mibII/ipv6", "found=%d\n", found));
246@@ -1697,7 +1761,11 @@ var_tcp6(register struct variable * vp, 260@@ -1697,7 +1767,11 @@ var_tcp6(register struct variable * vp,
247 #if defined(__NetBSD__) && __NetBSD_Version__ >= 106250000 /*1.6Y*/ 261 #if defined(__NetBSD__) && __NetBSD_Version__ >= 106250000 /*1.6Y*/
248 struct inpcbtable tcbtable; 262 struct inpcbtable tcbtable;
249 caddr_t first; 263 caddr_t first;
250-#elif (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin) 264-#elif (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin)
251+#elif defined(dragonfly) 265+#elif defined(dragonfly)
252+ char *sysctl_buf; 266+ char *sysctl_buf;
253+ size_t sysctl_len; 267+ size_t sysctl_len;
254+ struct xtcpcb *xtp; 268+ struct xtcpcb *xtp;
255+#elif defined(freebsd3) || defined(darwin) 269+#elif defined(freebsd3) || defined(darwin)
256 char *sysctl_buf; 270 char *sysctl_buf;
257 struct xinpgen *xig, *oxig; 271 struct xinpgen *xig, *oxig;
258 #else 272 #else
259@@ -1712,10 +1780,31 @@ var_tcp6(register struct variable * vp, 273@@ -1712,10 +1786,31 @@ var_tcp6(register struct variable * vp,
260 if (!auto_nlist("tcbtable", (char *) &tcbtable, sizeof(tcbtable))) 274 if (!auto_nlist("tcbtable", (char *) &tcbtable, sizeof(tcbtable)))
261 return NULL; 275 return NULL;
262 first = p = (caddr_t)tcbtable.inpt_queue.cqh_first; 276 first = p = (caddr_t)tcbtable.inpt_queue.cqh_first;
263-#elif !(defined(__FreeBSD__) && __FreeBSD__ >= 3) && !defined(darwin) 277-#elif !(defined(__FreeBSD__) && __FreeBSD__ >= 3) && !defined(darwin)
264+#elif !defined(freebsd3) && !defined(darwin) 278+#elif !defined(freebsd3) && !defined(darwin)
265 if (!auto_nlist("tcb6", (char *) &tcb6, sizeof(tcb6))) 279 if (!auto_nlist("tcb6", (char *) &tcb6, sizeof(tcb6)))
266 return NULL; 280 return NULL;
267 p = (caddr_t) tcb6.in6p_next; 281 p = (caddr_t) tcb6.in6p_next;
268+#elif defined(dragonfly) 282+#elif defined(dragonfly)
269+ { 283+ {
270+ const char *tcblist = "net.inet.tcp.pcblist"; 284+ const char *tcblist = "net.inet.tcp.pcblist";
271+ const char *pp = tcblist; 285+ const char *pp = tcblist;
272+ 286+
@@ -279,37 +293,37 @@ $NetBSD: patch-de,v 1.7 2011/05/27 10:55 @@ -279,37 +293,37 @@ $NetBSD: patch-de,v 1.7 2011/05/27 10:55
279+ free(sysctl_buf); 293+ free(sysctl_buf);
280+ return NULL; 294+ return NULL;
281+ } 295+ }
282+ xtp = (struct xtcpcb *) sysctl_buf; 296+ xtp = (struct xtcpcb *) sysctl_buf;
283+ if (xtp->xt_len != sizeof(*xtp)) { 297+ if (xtp->xt_len != sizeof(*xtp)) {
284+ free(sysctl_buf); 298+ free(sysctl_buf);
285+ return NULL; 299+ return NULL;
286+ } 300+ }
287+ p = (caddr_t) ((char *) xtp); /* silence compiler warning */ 301+ p = (caddr_t) ((char *) xtp); /* silence compiler warning */
288+ } 302+ }
289 #else 303 #else
290 { 304 {
291 const char *tcblist = "net.inet.tcp.pcblist"; 305 const char *tcblist = "net.inet.tcp.pcblist";
292@@ -1732,7 +1821,8 @@ var_tcp6(register struct variable * vp, 306@@ -1732,7 +1827,8 @@ var_tcp6(register struct variable * vp,
293 return NULL; 307 return NULL;
294 } 308 }
295 oxig = (struct xinpgen *) sysctl_buf; 309 oxig = (struct xinpgen *) sysctl_buf;
296- xig = (struct xinpgen *) ((char *) oxig + oxig->xig_len); 310- xig = (struct xinpgen *) ((char *) oxig + oxig->xig_len);
297+ xig = (struct xinpgen *) ((char *) oxtp + oxtp->xt_len); 311+ xig = (struct xinpgen *) ((char *) oxtp + oxtp->xt_len);
298+ if (oxig 312+ if (oxig
299 p = (caddr_t) ((char *) xig); /* silence compiler warning */ 313 p = (caddr_t) ((char *) xig); /* silence compiler warning */
300 } 314 }
301 #endif 315 #endif
302@@ -1743,28 +1833,32 @@ var_tcp6(register struct variable * vp, 316@@ -1743,28 +1839,32 @@ var_tcp6(register struct variable * vp,
303 while ( 317 while (
304 #if defined(__NetBSD__) && __NetBSD_Version__ >= 106250000 /*1.6Y*/ 318 #if defined(__NetBSD__) && __NetBSD_Version__ >= 106250000 /*1.6Y*/
305 p && p != first 319 p && p != first
306-#elif !(defined(__FreeBSD__) && __FreeBSD__ >= 3) && !defined(darwin) 320-#elif !(defined(__FreeBSD__) && __FreeBSD__ >= 3) && !defined(darwin)
307+#elif !defined(freebsd3) && !defined(darwin) 321+#elif !defined(freebsd3) && !defined(darwin)
308 p && (u_long) p != auto_nlist_value("tcb6") 322 p && (u_long) p != auto_nlist_value("tcb6")
309+#elif defined(dragonfly) 323+#elif defined(dragonfly)
310+ (char *)xtp + xtp->xt_len < sysctl_buf + sysctl_len 324+ (char *)xtp + xtp->xt_len < sysctl_buf + sysctl_len
311 #else 325 #else
312 xig->xig_len > sizeof(struct xinpgen) 326 xig->xig_len > sizeof(struct xinpgen)
313 #endif 327 #endif
314 ) { 328 ) {
315 DEBUGMSGTL(("mibII/ipv6", "looping: p=%x\n", p)); 329 DEBUGMSGTL(("mibII/ipv6", "looping: p=%x\n", p));
@@ -325,27 +339,27 @@ $NetBSD: patch-de,v 1.7 2011/05/27 10:55 @@ -325,27 +339,27 @@ $NetBSD: patch-de,v 1.7 2011/05/27 10:55
325+#elif defined(dragonfly) 339+#elif defined(dragonfly)
326+ in6pcb = xtp->xt_inp; 340+ in6pcb = xtp->xt_inp;
327 #else 341 #else
328 in6pcb = ((struct xinpcb *) xig)->xi_inp; 342 in6pcb = ((struct xinpcb *) xig)->xi_inp;
329 #endif 343 #endif
330 #if defined(__NetBSD__) && __NetBSD_Version__ >= 106250000 /*1.6Y*/ 344 #if defined(__NetBSD__) && __NetBSD_Version__ >= 106250000 /*1.6Y*/
331 if (in6pcb.in6p_af != AF_INET6) 345 if (in6pcb.in6p_af != AF_INET6)
332 goto skip; 346 goto skip;
333-#elif (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin) 347-#elif (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin)
334+#elif defined(freebsd3) || defined(darwin) 348+#elif defined(freebsd3) || defined(darwin)
335 if (0 == (in6pcb.inp_vflag & INP_IPV6)) 349 if (0 == (in6pcb.inp_vflag & INP_IPV6))
336 goto skip; 350 goto skip;
337 #endif 351 #endif
338@@ -1820,13 +1914,15 @@ var_tcp6(register struct variable * vp, 352@@ -1820,13 +1920,15 @@ var_tcp6(register struct variable * vp,
339 skip: 353 skip:
340 #if defined(__NetBSD__) && __NetBSD_Version__ >= 106250000 /*1.6Y*/ 354 #if defined(__NetBSD__) && __NetBSD_Version__ >= 106250000 /*1.6Y*/
341 p = (caddr_t)in6pcb.in6p_queue.cqe_next; 355 p = (caddr_t)in6pcb.in6p_queue.cqe_next;
342-#elif !(defined(__FreeBSD__) && __FreeBSD__ >= 3) && !defined(darwin) 356-#elif !(defined(__FreeBSD__) && __FreeBSD__ >= 3) && !defined(darwin)
343+#elif !defined(freebsd3) && !defined(darwin) 357+#elif !defined(freebsd3) && !defined(darwin)
344 p = (caddr_t) in6pcb.in6p_next; 358 p = (caddr_t) in6pcb.in6p_next;
345+#elif defined(dragonfly) 359+#elif defined(dragonfly)
346+ xtp = (struct xtcpcb *) ((char *)xtp + xtp->xt_len); 360+ xtp = (struct xtcpcb *) ((char *)xtp + xtp->xt_len);
347 #else 361 #else
348 xig = (struct xinpgen *) ((char *) xig + xig->xig_len); 362 xig = (struct xinpgen *) ((char *) xig + xig->xig_len);
349 #endif 363 #endif
350 } 364 }
351-#if (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin) 365-#if (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(darwin)