diff options
author | julian <julian@FreeBSD.org> | 1996-08-29 23:16:34 +0000 |
---|---|---|
committer | julian <julian@FreeBSD.org> | 1996-08-29 23:16:34 +0000 |
commit | d6528e09bf2fc871352eefbf24f1b16ddf66d4dc (patch) | |
tree | 65b5b5c549f41604eb4e02921b682acae58daf1e /sys/netatalk/aarp.c | |
parent | 60f630a42e2406bcb512c9f1b5b2a2571304d5b7 (diff) | |
download | FreeBSD-src-d6528e09bf2fc871352eefbf24f1b16ddf66d4dc.zip FreeBSD-src-d6528e09bf2fc871352eefbf24f1b16ddf66d4dc.tar.gz |
Massively COMMENT at_control.c
and fix some bugs..
also fix a bug in aarp.c that didn't take netranges into account.
default routes now work with appletalk, which is a poor-man's
way of being able to access netranges if you only have one network :)
Hopefully the full netranges fix will happen soon.
Diffstat (limited to 'sys/netatalk/aarp.c')
-rw-r--r-- | sys/netatalk/aarp.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/sys/netatalk/aarp.c b/sys/netatalk/aarp.c index 68c243f..1d7e029 100644 --- a/sys/netatalk/aarp.c +++ b/sys/netatalk/aarp.c @@ -89,20 +89,33 @@ aarptimer(void *ignored) } } +/* + * search through the network addresses to find one that includes + * the given network.. remember to take netranges into + * consideration. + */ struct ifaddr * at_ifawithnet( sat, ifa ) struct sockaddr_at *sat; struct ifaddr *ifa; { + struct sockaddr_at *sat2; + struct netrange *nr; for (; ifa; ifa = ifa->ifa_next ) { if ( ifa->ifa_addr->sa_family != AF_APPLETALK ) { continue; } - if ( satosat( ifa->ifa_addr )->sat_addr.s_net == - sat->sat_addr.s_net ) { + sat2 = satosat( ifa->ifa_addr ); + if ( sat2->sat_addr.s_net == sat->sat_addr.s_net ) { break; } + nr = (struct netrange *)(sat2->sat_zero); + if( (nr->nr_phase == 2 ) + && (nr->nr_firstnet <= sat->sat_addr.s_net) + && (nr->nr_lastnet >= sat->sat_addr.s_net)) { + break; + } } return( ifa ); } |