summaryrefslogtreecommitdiffstats
path: root/sys/netatalk/aarp.c
diff options
context:
space:
mode:
authorjulian <julian@FreeBSD.org>1996-08-29 23:16:34 +0000
committerjulian <julian@FreeBSD.org>1996-08-29 23:16:34 +0000
commitd6528e09bf2fc871352eefbf24f1b16ddf66d4dc (patch)
tree65b5b5c549f41604eb4e02921b682acae58daf1e /sys/netatalk/aarp.c
parent60f630a42e2406bcb512c9f1b5b2a2571304d5b7 (diff)
downloadFreeBSD-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.c17
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 );
}
OpenPOWER on IntegriCloud