| @@ -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) |