/*
+ * $Id: multicast.c,v 1.13 2009-10-14 01:38:28 didg Exp $
+ *
* Copyright (c) 1990,1993 Regents of The University of Michigan.
* All Rights Reserved. See COPYRIGHT.
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
-#endif
+#endif /* HAVE_CONFIG_H */
#include <stdlib.h>
#include <string.h>
+#include <errno.h>
#include <sys/param.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
+#ifdef TRU64
+#include <sys/mbuf.h>
+#include <net/route.h>
+#endif /* TRU64 */
#include <net/if.h>
-#include <syslog.h>
+#include <atalk/logger.h>
/* work around for FreeBSD */
#if defined(__FreeBSD__) && (__FreeBSD__ >= 2)
#if __FreeBSD_version >= 300000
#include <net/if_dl.h>
#define NO_DATA_LINK_PASSTHROUGH
-#endif
-#endif
+#endif /* __FreeBSD_version >= 300000 */
+#endif /* __FreeBSD__ */
#ifdef __svr4__
#include <sys/sockio.h>
-#endif __svr4__
+#endif /* __svr4__ */
#include <atalk/util.h>
#include <netatalk/endian.h>
#include "rtmp.h"
#include "zip.h"
#include "main.h"
+#include "multicast.h"
static const unsigned char ethermulti[ 6 ] = {
{ 0x09, 0x00, 0x07, 0x00, 0x00, 0xfc, },
};
-static const unsigned char tokenmulti[ 6 ] = {
- 0xc0, 0x00, 0x40, 0x00, 0x00, 0x00,
-};
-
-static const unsigned char tokenmultitab[ 19 ][ 6 ] = {
- { 0xc0, 0x00, 0x00, 0x00, 0x08, 0x00, },
- { 0xc0, 0x00, 0x00, 0x00, 0x10, 0x00, },
- { 0xc0, 0x00, 0x00, 0x00, 0x20, 0x00, },
- { 0xc0, 0x00, 0x00, 0x00, 0x40, 0x00, },
- { 0xc0, 0x00, 0x00, 0x00, 0x80, 0x00, },
- { 0xc0, 0x00, 0x00, 0x01, 0x00, 0x00, },
- { 0xc0, 0x00, 0x00, 0x02, 0x00, 0x00, },
- { 0xc0, 0x00, 0x00, 0x04, 0x00, 0x00, },
- { 0xc0, 0x00, 0x00, 0x08, 0x00, 0x00, },
- { 0xc0, 0x00, 0x00, 0x10, 0x00, 0x00, },
- { 0xc0, 0x00, 0x00, 0x20, 0x00, 0x00, },
- { 0xc0, 0x00, 0x00, 0x40, 0x00, 0x00, },
- { 0xc0, 0x00, 0x00, 0x80, 0x00, 0x00, },
- { 0xc0, 0x00, 0x01, 0x00, 0x00, 0x00, },
- { 0xc0, 0x00, 0x02, 0x00, 0x00, 0x00, },
- { 0xc0, 0x00, 0x04, 0x00, 0x00, 0x00, },
- { 0xc0, 0x00, 0x08, 0x00, 0x00, 0x00, },
- { 0xc0, 0x00, 0x10, 0x00, 0x00, 0x00, },
- { 0xc0, 0x00, 0x20, 0x00, 0x00, 0x00, },
-};
-
/* configure multicast for a given named interface */
{
#ifdef NO_DATA_LINK_PASSTHROUGH
struct sockaddr_dl sa;
-#else
+#else /* NO_DATA_LINK_PASSTHROUGH */
struct sockaddr sa;
-#endif
+#endif /* NO_DATA_LINK_PASSTHROUGH */
memset(&sa, 0, sizeof(sa));
#ifdef NO_DATA_LINK_PASSTHROUGH
memcpy(LLADDR(&sa), data ? data : ethermulti, sizeof(ethermulti));
sa.sdl_alen = sizeof(ethermulti);
sa.sdl_len = sizeof(sa);
-#else
+#else /* NO_DATA_LINK_PASSTHROUGH */
memcpy(sa.sa_data, data ? data : ethermulti, sizeof(ethermulti));
-#endif
+#endif /* NO_DATA_LINK_PASSTHROUGH */
if (ifconfig(name, SIOCADDMULTI, (struct sockaddr_at *)&sa))
return -1;
}
static u_int16_t
-atalk_cksum( data, len )
- u_char *data;
- int len;
+atalk_cksum( u_char *data, int len)
{
u_char *end;
u_int32_t cksum = 0;
* alike.)
*/
int
-zone_bcast( zt )
- struct ziptab *zt;
+zone_bcast( struct ziptab *zt)
{
u_char uname[ 32 ];
u_int16_t cksum;
if (!zt->zt_bcast &&
(zt->zt_bcast = (u_char *) malloc(sizeof( ethermulti ))) == NULL) {
- syslog( LOG_ERR, "zone_bcast malloc: %m" );
+ LOG(log_error, logtype_atalkd, "zone_bcast malloc: %s", strerror(errno) );
return -1;
}
for ( i = 0; i < zt->zt_len; i++ ) {
- uname[ i ] = diatoupper(zt->zt_name[ i ]);
+ uname[ i ] = diatoupper((int) zt->zt_name[ i ]);
}
cksum = atalk_cksum( uname, zt->zt_len );
#define elements(a) (sizeof(a)/sizeof((a)[0]))