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
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>