tables.c (122760) | tables.c (189369) |
---|---|
1/* 2 * Copyright (c) 1985, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * Copyright (c) 1995 John Hay. All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 18 unchanged lines hidden (view full) --- 27 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33 * SUCH DAMAGE. 34 * | 1/* 2 * Copyright (c) 1985, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * Copyright (c) 1995 John Hay. All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 18 unchanged lines hidden (view full) --- 27 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33 * SUCH DAMAGE. 34 * |
35 * $FreeBSD: head/usr.sbin/IPXrouted/tables.c 122760 2003-11-15 17:10:56Z trhodes $ | 35 * $FreeBSD: head/usr.sbin/IPXrouted/tables.c 189369 2009-03-04 18:36:48Z ed $ |
36 */ 37 38#ifndef lint 39static const char sccsid[] = "@(#)tables.c 8.1 (Berkeley) 6/5/93"; 40#endif /* not lint */ 41 42/* 43 * Routing Table Management Daemon --- 15 unchanged lines hidden (view full) --- 59int delete = 1; 60 61struct rthash nethash[ROUTEHASHSIZ]; 62 63/* 64 * Lookup dst in the tables for an exact match. 65 */ 66struct rt_entry * | 36 */ 37 38#ifndef lint 39static const char sccsid[] = "@(#)tables.c 8.1 (Berkeley) 6/5/93"; 40#endif /* not lint */ 41 42/* 43 * Routing Table Management Daemon --- 15 unchanged lines hidden (view full) --- 59int delete = 1; 60 61struct rthash nethash[ROUTEHASHSIZ]; 62 63/* 64 * Lookup dst in the tables for an exact match. 65 */ 66struct rt_entry * |
67rtlookup(dst) 68 struct sockaddr *dst; | 67rtlookup(struct sockaddr *dst) |
69{ 70 register struct rt_entry *rt; 71 register struct rthash *rh; 72 register u_int hash; 73 struct afhash h; 74 75 if (dst->sa_family >= AF_MAX) 76 return (0); --- 8 unchanged lines hidden (view full) --- 85 } 86 return (0); 87} 88 89/* 90 * Find a route to dst as the kernel would. 91 */ 92struct rt_entry * | 68{ 69 register struct rt_entry *rt; 70 register struct rthash *rh; 71 register u_int hash; 72 struct afhash h; 73 74 if (dst->sa_family >= AF_MAX) 75 return (0); --- 8 unchanged lines hidden (view full) --- 84 } 85 return (0); 86} 87 88/* 89 * Find a route to dst as the kernel would. 90 */ 91struct rt_entry * |
93rtfind(dst) 94 struct sockaddr *dst; | 92rtfind(struct sockaddr *dst) |
95{ 96 register struct rt_entry *rt; 97 register struct rthash *rh; 98 register u_int hash; 99 struct afhash h; 100 int af = dst->sa_family; 101 int (*match)() = 0; 102 --- 10 unchanged lines hidden (view full) --- 113 if (rt->rt_dst.sa_family == af && 114 (*match)(&rt->rt_dst, dst)) 115 return (rt); 116 } 117 return (0); 118} 119 120void | 93{ 94 register struct rt_entry *rt; 95 register struct rthash *rh; 96 register u_int hash; 97 struct afhash h; 98 int af = dst->sa_family; 99 int (*match)() = 0; 100 --- 10 unchanged lines hidden (view full) --- 111 if (rt->rt_dst.sa_family == af && 112 (*match)(&rt->rt_dst, dst)) 113 return (rt); 114 } 115 return (0); 116} 117 118void |
121rtadd(dst, gate, metric, ticks, state) 122 struct sockaddr *dst, *gate; 123 short metric, ticks; 124 int state; | 119rtadd(struct sockaddr *dst, struct sockaddr *gate, short metric, 120 short ticks, int state) |
125{ 126 struct afhash h; 127 register struct rt_entry *rt; 128 struct rthash *rh; 129 int af = dst->sa_family, flags; 130 u_int hash; 131 132 FIXLEN(dst); --- 33 unchanged lines hidden (view full) --- 166 TRACE_ACTION("DELETE", rt); 167 remque(rt); 168 free((char *)rt); 169 } 170 } 171} 172 173void | 121{ 122 struct afhash h; 123 register struct rt_entry *rt; 124 struct rthash *rh; 125 int af = dst->sa_family, flags; 126 u_int hash; 127 128 FIXLEN(dst); --- 33 unchanged lines hidden (view full) --- 162 TRACE_ACTION("DELETE", rt); 163 remque(rt); 164 free((char *)rt); 165 } 166 } 167} 168 169void |
174rtadd_clone(ort, dst, gate, metric, ticks, state) 175 struct rt_entry *ort; 176 struct sockaddr *dst, *gate; 177 short metric, ticks; 178 int state; | 170rtadd_clone(struct rt_entry *ort, struct sockaddr *dst, 171 struct sockaddr *gate, short metric, short ticks, int state) |
179{ 180 struct afhash h; 181 register struct rt_entry *rt; 182 struct rthash *rh; 183 int af = dst->sa_family, flags; 184 u_int hash; 185 186 FIXLEN(dst); --- 24 unchanged lines hidden (view full) --- 211 212 while(ort->rt_clone != NULL) 213 ort = ort->rt_clone; 214 ort->rt_clone = rt; 215 TRACE_ACTION("ADD_CLONE", rt); 216} 217 218void | 172{ 173 struct afhash h; 174 register struct rt_entry *rt; 175 struct rthash *rh; 176 int af = dst->sa_family, flags; 177 u_int hash; 178 179 FIXLEN(dst); --- 24 unchanged lines hidden (view full) --- 204 205 while(ort->rt_clone != NULL) 206 ort = ort->rt_clone; 207 ort->rt_clone = rt; 208 TRACE_ACTION("ADD_CLONE", rt); 209} 210 211void |
219rtchange(rt, gate, metric, ticks) 220 struct rt_entry *rt; 221 struct sockaddr *gate; 222 short metric, ticks; | 212rtchange(struct rt_entry *rt, struct sockaddr *gate, short metric, 213 short ticks) |
223{ 224 int doioctl = 0, metricchanged = 0; 225 struct rtuentry oldroute; 226 227 FIXLEN(gate); 228 /* 229 * Handling of clones. 230 * When the route changed and it had clones, handle it special. --- 101 unchanged lines hidden (view full) --- 332 syslog(LOG_ERR, "rtioctl ADD dst %s, gw %s: %m", 333 ipxdp_ntoa(&((struct sockaddr_ipx *)&rt->rt_dst)->sipx_addr), 334 ipxdp_ntoa(&((struct sockaddr_ipx *)&rt->rt_router)->sipx_addr)); 335#endif 336 } 337} 338 339void | 214{ 215 int doioctl = 0, metricchanged = 0; 216 struct rtuentry oldroute; 217 218 FIXLEN(gate); 219 /* 220 * Handling of clones. 221 * When the route changed and it had clones, handle it special. --- 101 unchanged lines hidden (view full) --- 323 syslog(LOG_ERR, "rtioctl ADD dst %s, gw %s: %m", 324 ipxdp_ntoa(&((struct sockaddr_ipx *)&rt->rt_dst)->sipx_addr), 325 ipxdp_ntoa(&((struct sockaddr_ipx *)&rt->rt_router)->sipx_addr)); 326#endif 327 } 328} 329 330void |
340rtdelete(rt) 341 struct rt_entry *rt; | 331rtdelete(struct rt_entry *rt) |
342{ 343 344 struct sockaddr *sa = &(rt->rt_router); 345 FIXLEN(sa); 346 sa = &(rt->rt_dst); 347 FIXLEN(sa); 348 if (rt->rt_clone) { 349 /* --- 25 unchanged lines hidden (view full) --- 375 register struct rthash *rh; 376 377 for (rh = nethash; rh < &nethash[ROUTEHASHSIZ]; rh++) 378 rh->rt_forw = rh->rt_back = (struct rt_entry *)rh; 379} 380int seqno; 381 382int | 332{ 333 334 struct sockaddr *sa = &(rt->rt_router); 335 FIXLEN(sa); 336 sa = &(rt->rt_dst); 337 FIXLEN(sa); 338 if (rt->rt_clone) { 339 /* --- 25 unchanged lines hidden (view full) --- 365 register struct rthash *rh; 366 367 for (rh = nethash; rh < &nethash[ROUTEHASHSIZ]; rh++) 368 rh->rt_forw = rh->rt_back = (struct rt_entry *)rh; 369} 370int seqno; 371 372int |
383rtioctl(action, ort) 384 int action; 385 struct rtuentry *ort; | 373rtioctl(int action, struct rtuentry *ort) |
386{ 387#ifndef RTM_ADD 388 if (install == 0) 389 return (errno = 0); 390 391 ort->rtu_rtflags = ort->rtu_flags; 392 393 switch (action) { --- 42 unchanged lines hidden --- | 374{ 375#ifndef RTM_ADD 376 if (install == 0) 377 return (errno = 0); 378 379 ort->rtu_rtflags = ort->rtu_flags; 380 381 switch (action) { --- 42 unchanged lines hidden --- |