ca76526b11
if it exists.
245 lines
6.6 KiB
Plaintext
245 lines
6.6 KiB
Plaintext
--- etc/atalkd/nbp.c.orig Tue Oct 28 09:28:43 1997
|
|
+++ etc/atalkd/nbp.c Wed Nov 10 15:55:22 1999
|
|
@@ -12,6 +12,8 @@
|
|
#include <stdlib.h>
|
|
#include <atalk/ddp.h>
|
|
#include <atalk/nbp.h>
|
|
+#include <stdlib.h>
|
|
+#include <string.h>
|
|
|
|
#ifdef __svr4__
|
|
#include <sys/sockio.h>
|
|
@@ -27,9 +29,13 @@
|
|
#include "multicast.h"
|
|
|
|
extern int transition;
|
|
+extern int strndiacasecmp();
|
|
|
|
struct nbptab *nbptab = 0;
|
|
|
|
+void nbp_ack();
|
|
+
|
|
+void
|
|
nbp_packet( ap, from, data, len )
|
|
struct atport *ap;
|
|
struct sockaddr_at *from;
|
|
@@ -39,7 +45,6 @@
|
|
struct nbphdr nh;
|
|
struct nbptuple nt;
|
|
struct nbpnve nn;
|
|
- struct sockaddr sa;
|
|
struct sockaddr_at sat;
|
|
struct nbptab *ntab;
|
|
struct ziptab *zt;
|
|
@@ -48,7 +53,6 @@
|
|
struct rtmptab *rtmp;
|
|
char *end, *nbpop, *zonep, packet[ 587 ];
|
|
int n, i, cc, locallkup = 0;
|
|
- u_short tonet;
|
|
|
|
end = data + len;
|
|
if ( data >= end ) {
|
|
@@ -64,7 +68,7 @@
|
|
syslog( LOG_INFO, "nbp_packet: malformed packet" );
|
|
return;
|
|
}
|
|
- bcopy( data, &nh, SZ_NBPHDR );
|
|
+ memcpy( &nh, data, SZ_NBPHDR );
|
|
nbpop = data; /* remember for fwd and brrq */
|
|
data += SZ_NBPHDR;
|
|
if ( nh.nh_cnt != 1 ) {
|
|
@@ -73,10 +77,10 @@
|
|
return;
|
|
}
|
|
|
|
- bcopy( data, &nt, SZ_NBPTUPLE );
|
|
+ memcpy( &nt, data, SZ_NBPTUPLE );
|
|
data += SZ_NBPTUPLE;
|
|
|
|
- bzero( &nn.nn_sat, sizeof( struct sockaddr_at ));
|
|
+ memset( &nn.nn_sat, 0, sizeof( struct sockaddr_at ));
|
|
#ifdef BSD4_4
|
|
nn.nn_sat.sat_len = sizeof( struct sockaddr_at );
|
|
#endif BSD4_4
|
|
@@ -91,7 +95,7 @@
|
|
return;
|
|
}
|
|
nn.nn_objlen = *data++;
|
|
- bcopy( data, nn.nn_obj, nn.nn_objlen );
|
|
+ memcpy( nn.nn_obj, data, nn.nn_objlen );
|
|
data += nn.nn_objlen;
|
|
|
|
/* type */
|
|
@@ -100,7 +104,7 @@
|
|
return;
|
|
}
|
|
nn.nn_typelen = *data++;
|
|
- bcopy( data, nn.nn_type, nn.nn_typelen );
|
|
+ memcpy( nn.nn_type, data, nn.nn_typelen );
|
|
data += nn.nn_typelen;
|
|
|
|
/* zone */
|
|
@@ -110,7 +114,7 @@
|
|
}
|
|
zonep = data; /* remember for fwd */
|
|
nn.nn_zonelen = *data++;
|
|
- bcopy( data, nn.nn_zone, nn.nn_zonelen );
|
|
+ memcpy( nn.nn_zone, data, nn.nn_zonelen );
|
|
data += nn.nn_zonelen;
|
|
|
|
if ( data != end ) {
|
|
@@ -173,7 +177,7 @@
|
|
syslog( LOG_ERR, "nbp rgstr malloc: %m" );
|
|
exit( 1 );
|
|
}
|
|
- bcopy( zone_mcast( zt->zt_name, zt->zt_len ), zt->zt_bcast,
|
|
+ memcpy( zt->zt_bcast, zone_mcast( zt->zt_name, zt->zt_len ),
|
|
sizeof( ethermulti ));
|
|
|
|
for ( iface = interfaces; iface; iface = iface->i_next ) {
|
|
@@ -197,7 +201,7 @@
|
|
syslog( LOG_ERR, "malloc: %m" );
|
|
exit( 1 );
|
|
}
|
|
- bcopy( &nn, &ntab->nt_nve, sizeof( struct nbpnve ));
|
|
+ memcpy( &ntab->nt_nve, &nn, sizeof( struct nbpnve ));
|
|
ntab->nt_next = nbptab;
|
|
ntab->nt_prev = 0;
|
|
if ( nbptab != 0 ) {
|
|
@@ -287,11 +291,11 @@
|
|
* of this packet.
|
|
*/
|
|
if ( zt ) {
|
|
- bcopy( data - len, packet, len );
|
|
+ memcpy( packet, data - len, len );
|
|
nbpop = packet + ( len - ( data - nbpop ));
|
|
data = packet + ( len - ( data - zonep ));
|
|
*data++ = zt->zt_len;
|
|
- bcopy( zt->zt_name, data, zt->zt_len );
|
|
+ memcpy( data, zt->zt_name, zt->zt_len );
|
|
data += zt->zt_len;
|
|
len = data - packet;
|
|
}
|
|
@@ -322,7 +326,7 @@
|
|
sat.sat_port = ap->ap_port;
|
|
|
|
nh.nh_op = NBPOP_LKUP;
|
|
- bcopy( &nh, nbpop, SZ_NBPHDR );
|
|
+ memcpy( nbpop, &nh, SZ_NBPHDR );
|
|
sat.sat_addr.s_net = 0; /* XXX */
|
|
sat.sat_addr.s_node = ATADDR_BCAST;
|
|
|
|
@@ -336,7 +340,7 @@
|
|
return;
|
|
}
|
|
for ( ap = iface->i_ports; ap; ap = ap->ap_next ) {
|
|
- if ( ap->ap_packet == nbp_packet ) {
|
|
+ if ( (void *) ap->ap_packet == (void *) nbp_packet ) {
|
|
break;
|
|
}
|
|
}
|
|
@@ -372,7 +376,7 @@
|
|
ap = rtmp->rt_gate->g_iface->i_ports;
|
|
}
|
|
for ( ; ap; ap = ap->ap_next ) {
|
|
- if ( ap->ap_packet == nbp_packet ) {
|
|
+ if ( (void *) ap->ap_packet == (void *)nbp_packet ) {
|
|
break;
|
|
}
|
|
}
|
|
@@ -387,19 +391,19 @@
|
|
locallkup = 1;
|
|
}
|
|
nh.nh_op = NBPOP_LKUP;
|
|
- bcopy( &nh, nbpop, SZ_NBPHDR );
|
|
+ memcpy( nbpop, &nh, SZ_NBPHDR );
|
|
sat.sat_addr.s_net = rtmp->rt_firstnet;
|
|
sat.sat_addr.s_node = ATADDR_BCAST;
|
|
} else {
|
|
if ( rtmp->rt_gate == 0 ) {
|
|
nh.nh_op = NBPOP_LKUP;
|
|
- bcopy( &nh, nbpop, SZ_NBPHDR );
|
|
+ memcpy( nbpop, &nh, SZ_NBPHDR );
|
|
sat.sat_addr.s_net = 0;
|
|
sat.sat_addr.s_node = ATADDR_BCAST;
|
|
locallkup = 1;
|
|
} else {
|
|
nh.nh_op = NBPOP_FWD;
|
|
- bcopy( &nh, nbpop, SZ_NBPHDR );
|
|
+ memcpy( nbpop, &nh, SZ_NBPHDR );
|
|
sat.sat_addr.s_net = rtmp->rt_firstnet;
|
|
sat.sat_addr.s_node = 0;
|
|
}
|
|
@@ -425,7 +429,7 @@
|
|
/* should we check that we're a router? XXX */
|
|
if ( !locallkup && ninterfaces > IFBASE ) {
|
|
nh.nh_op = NBPOP_LKUP;
|
|
- bcopy( &nh, nbpop, SZ_NBPHDR );
|
|
+ memcpy( nbpop, &nh, SZ_NBPHDR );
|
|
from->sat_addr.s_net = 0;
|
|
from->sat_addr.s_node = ATADDR_BCAST;
|
|
if ( sendto( ap->ap_fd, data - len, len, 0, (struct sockaddr *)from,
|
|
@@ -494,7 +498,7 @@
|
|
cc = data - packet;
|
|
data = packet;
|
|
*data++ = DDPTYPE_NBP;
|
|
- bcopy( &nh, data, SZ_NBPHDR );
|
|
+ memcpy( data, &nh, SZ_NBPHDR );
|
|
|
|
if ( sendto( ap->ap_fd, packet, cc, 0,
|
|
(struct sockaddr *)&nn.nn_sat,
|
|
@@ -522,15 +526,15 @@
|
|
*/
|
|
nt.nt_enum = i++;
|
|
|
|
- bcopy( &nt, data, SZ_NBPTUPLE );
|
|
+ memcpy( data, &nt, SZ_NBPTUPLE );
|
|
data += SZ_NBPTUPLE;
|
|
|
|
*data++ = ntab->nt_nve.nn_objlen;
|
|
- bcopy( ntab->nt_nve.nn_obj, data, ntab->nt_nve.nn_objlen );
|
|
+ memcpy( data, ntab->nt_nve.nn_obj, ntab->nt_nve.nn_objlen );
|
|
data += ntab->nt_nve.nn_objlen;
|
|
|
|
*data++ = ntab->nt_nve.nn_typelen;
|
|
- bcopy( ntab->nt_nve.nn_type, data, ntab->nt_nve.nn_typelen );
|
|
+ memcpy( data, ntab->nt_nve.nn_type, ntab->nt_nve.nn_typelen );
|
|
data += ntab->nt_nve.nn_typelen;
|
|
|
|
/*
|
|
@@ -540,7 +544,7 @@
|
|
*/
|
|
if ( ntab->nt_nve.nn_zonelen ) {
|
|
*data++ = ntab->nt_nve.nn_zonelen;
|
|
- bcopy( ntab->nt_nve.nn_zone, data, ntab->nt_nve.nn_zonelen );
|
|
+ memcpy( data, ntab->nt_nve.nn_zone, ntab->nt_nve.nn_zonelen );
|
|
data += ntab->nt_nve.nn_zonelen;
|
|
} else {
|
|
*data++ = 1;
|
|
@@ -556,7 +560,7 @@
|
|
cc = data - packet;
|
|
data = packet;
|
|
*data++ = DDPTYPE_NBP;
|
|
- bcopy( &nh, data, SZ_NBPHDR );
|
|
+ memcpy( data, &nh, SZ_NBPHDR );
|
|
|
|
if ( sendto( ap->ap_fd, packet, cc, 0,
|
|
(struct sockaddr *)&nn.nn_sat,
|
|
@@ -574,6 +578,7 @@
|
|
}
|
|
}
|
|
|
|
+void
|
|
nbp_ack( fd, nh_op, nh_id, to )
|
|
int fd;
|
|
int nh_op;
|
|
@@ -588,7 +593,7 @@
|
|
nh.nh_id = nh_id;
|
|
data = packet;
|
|
*data++ = DDPTYPE_NBP;
|
|
- bcopy( &nh, data, SZ_NBPHDR );
|
|
+ memcpy( data, &nh, SZ_NBPHDR );
|
|
data += SZ_NBPHDR;
|
|
if ( sendto( fd, packet, data - packet, 0, (struct sockaddr *)to,
|
|
sizeof( struct sockaddr_at )) < 0 ) {
|