Date: Mon, 07 Jul 1997 11:18:09 -0700 From: Julian Elischer <julian@whistle.com> To: netatalk@umich.edu, current@freebsd.org Subject: Patches for netatalk and FreeBSD-current (3.0) Message-ID: <33C132E1.59E2B600@whistle.com>
next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format. --------------FF6D5DF3F54BC7E1CFBAE39 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Here are patches for making netatalk work with the latest kernel in FreeBSD. The multicast support has changed slightly and this required that the appletalk code supply it's multicast requests in a slightly more pedantic manner. for a more complete fix the changes should be bracketed in: #if defined(__FreeBSD__) && ( __FreeBSD >= 3 ) ..fix code #endif however I'm not sure if this fix might work just as well for other systems by default. this is for 1.4b2 under FreeBSD 3.0-current as of July 6 julian --------------FF6D5DF3F54BC7E1CFBAE39 Content-Type: text/plain; charset=us-ascii; name="xx" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="xx" diff -c netatalk-dist/etc/atalkd/main.c netatalk-dist.new/etc/atalkd/main.c *** netatalk-dist/etc/atalkd/main.c Mon Oct 21 15:45:03 1996 --- netatalk-dist.new/etc/atalkd/main.c Mon Jul 7 10:51:22 1997 *************** *** 18,23 **** --- 18,24 ---- #include <sys/errno.h> #include <net/if.h> #include <net/route.h> + #include <net/if_dl.h> #include <signal.h> #include <syslog.h> *************** *** 1149,1162 **** bootaddr( ciface ); } } else { /* configure multicast for this interface */ ! bzero( &sa, sizeof( struct sockaddr )); ! bcopy( ethermulti, sa.sa_data, sizeof( ethermulti )); ! if ( ifconfig( iface->i_name, SIOCADDMULTI, &sa )) { syslog( LOG_ERR, "addmulti: %m" ); exit( 1 ); } - zip_getnetinfo( iface ); } } --- 1150,1170 ---- bootaddr( ciface ); } } else { + struct sockaddr_dl *sdl = (struct sockaddr_dl *)&sa; /* configure multicast for this interface */ ! bzero( sdl, sizeof( struct sockaddr )); ! sdl->sdl_family = AF_LINK; ! sdl->sdl_nlen = 0 /* strlen(iface->i_name)*/; ! /*strncpy(sdl->sdl_data, iface->i_name, sdl->sdl_nlen);*/ ! bcopy( ethermulti, LLADDR(sdl), sizeof( ethermulti )); ! sdl->sdl_alen = sizeof( ethermulti ); ! sdl->sdl_len = sizeof(*sdl); ! /* (sdl->sdl_data + sdl->sdl_alen + sdl->sdl_nlen) ! - (char *)sdl; */ ! if ( ifconfig( iface->i_name, SIOCADDMULTI, sdl )) { syslog( LOG_ERR, "addmulti: %m" ); exit( 1 ); } zip_getnetinfo( iface ); } } diff -c netatalk-dist/etc/atalkd/nbp.c netatalk-dist.new/etc/atalkd/nbp.c *** netatalk-dist/etc/atalkd/nbp.c Sat Oct 5 08:17:53 1996 --- netatalk-dist.new/etc/atalkd/nbp.c Mon Jul 7 11:07:01 1997 *************** *** 7,13 **** --- 7,15 ---- #include <sys/types.h> #include <sys/socket.h> #include <sys/ioctl.h> + #include <sys/time.h> #include <net/if.h> + #include <net/if_dl.h> #include <netatalk/at.h> #include <atalk/ddp.h> #include <atalk/nbp.h> *************** *** 185,190 **** --- 187,201 ---- for ( l = iface->i_rt->rt_zt; l; l = l->l_next ) { if ( zt == (struct ziptab *)l->l_data ) { /* add multicast */ + struct sockaddr_dl *sdl = (struct sockaddr_dl *)&sa; + sdl->sdl_family = AF_LINK; + sdl->sdl_nlen = 0; + bcopy( zt->zt_bcast, sdl->sdl_data, sizeof(ethermulti)); + sdl->sdl_alen = sizeof(ethermulti); + sdl->sdl_len = sizeof (*sdl); + /* (sdl->sdl_data + + sdl->sdl_alen + sdl->sdl_nlen) + - (char *)sdl; */ if ( ifconfig( iface->i_name, SIOCADDMULTI, &sa )) { syslog( LOG_ERR, "addmulti: %m" ); exit( 1 ); diff -c netatalk-dist/etc/atalkd/rtmp.c netatalk-dist.new/etc/atalkd/rtmp.c *** netatalk-dist/etc/atalkd/rtmp.c Wed Sep 18 12:05:18 1996 --- netatalk-dist.new/etc/atalkd/rtmp.c Thu Jun 5 17:48:55 1997 *************** *** 7,12 **** --- 7,13 ---- #include <sys/types.h> #include <sys/socket.h> #include <sys/ioctl.h> + #include <sys/time.h> #include <net/if.h> #include <net/route.h> #include <netatalk/endian.h> --------------FF6D5DF3F54BC7E1CFBAE39--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?33C132E1.59E2B600>