Skip site navigation (1)Skip section navigation (2)
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

[-- Attachment #1 --]
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

[-- Attachment #2 --]
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>

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?33C132E1.59E2B600>