summaryrefslogtreecommitdiffstats
path: root/sys/netatalk/at_control.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/netatalk/at_control.c')
-rw-r--r--sys/netatalk/at_control.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/sys/netatalk/at_control.c b/sys/netatalk/at_control.c
index 8ae0f62..91e8653 100644
--- a/sys/netatalk/at_control.c
+++ b/sys/netatalk/at_control.c
@@ -136,7 +136,7 @@ at_control( int cmd, caddr_t data, struct ifnet *ifp, struct proc *p )
}
aa->aa_ifa.ifa_addr = (struct sockaddr *)&aa->aa_addr;
- aa->aa_ifa.ifa_dstaddr = (struct sockaddr *)&aa->aa_addr;
+ aa->aa_ifa.ifa_dstaddr = (struct sockaddr *)&aa->aa_dstaddr;
aa->aa_ifa.ifa_netmask = (struct sockaddr *)&aa->aa_netmask;
/*
@@ -378,29 +378,30 @@ at_ifinit( ifp, aa, sat )
return( error );
}
- /* Initialize interface netmask, which is silly for us */
+ /* Initialize netmask and broadcast address */
bzero(&aa->aa_netmask, sizeof(aa->aa_netmask));
+ aa->aa_ifa.ifa_netmask = (struct sockaddr *) &aa->aa_netmask;
aa->aa_netmask.sat_len = sizeof(struct sockaddr_at);
aa->aa_netmask.sat_family = AF_APPLETALK;
- aa->aa_ifa.ifa_netmask = (struct sockaddr *) &aa->aa_netmask;
+
+ bzero(&aa->aa_broadaddr, sizeof(aa->aa_broadaddr));
+ aa->aa_ifa.ifa_broadaddr = (struct sockaddr *) &aa->aa_broadaddr;
+ aa->aa_broadaddr.sat_len = sizeof(struct sockaddr_at);
+ aa->aa_broadaddr.sat_family = AF_APPLETALK;
/* "Add a route to the network" */
aa->aa_ifa.ifa_metric = ifp->if_metric;
if (ifp->if_flags & IFF_BROADCAST) {
- bzero(&aa->aa_broadaddr, sizeof(aa->aa_broadaddr));
- aa->aa_broadaddr.sat_len = sat->sat_len;
- aa->aa_broadaddr.sat_family = AF_APPLETALK;
aa->aa_broadaddr.sat_addr.s_net = htons(0);
aa->aa_broadaddr.sat_addr.s_node = 0xff;
- aa->aa_ifa.ifa_broadaddr = (struct sockaddr *) &aa->aa_broadaddr;
aa->aa_netmask.sat_addr.s_net = htons(0xffff); /* XXX */
- aa->aa_netmask.sat_addr.s_node = htons(0); /* XXX */
+ aa->aa_netmask.sat_addr.s_node = 0; /* XXX */
} else if (ifp->if_flags & IFF_LOOPBACK) {
aa->aa_ifa.ifa_dstaddr = aa->aa_ifa.ifa_addr;
aa->aa_netmask.sat_addr.s_net = htons(0xffff); /* XXX */
- aa->aa_netmask.sat_addr.s_node = htons(0xffff); /* XXX */
+ aa->aa_netmask.sat_addr.s_node = 0xff; /* XXX */
flags |= RTF_HOST;
} else if (ifp->if_flags & IFF_POINTOPOINT) {
aa->aa_ifa.ifa_dstaddr = aa->aa_ifa.ifa_addr;
@@ -408,7 +409,7 @@ at_ifinit( ifp, aa, sat )
aa->aa_netmask.sat_addr.s_node = htons(0xffff);
flags |= RTF_HOST;
}
- error = rtinit(&(aa->aa_ifa), (int)RTM_ADD, flags);
+ error = rtinit(&aa->aa_ifa, RTM_ADD, flags);
#if 0
if ( ifp->if_flags & IFF_LOOPBACK ) {
OpenPOWER on IntegriCloud