/*
- * $Id: rtmp.c,v 1.7 2001-08-03 22:12:54 srittau Exp $
+ * $Id: rtmp.c,v 1.12.8.1.2.1 2008-11-14 10:04:52 didg Exp $
*
* Copyright (c) 1990,1993 Regents of The University of Michigan.
* All Rights Reserved. See COPYRIGHT.
#include <stdlib.h>
#include <string.h>
-#include <sys/syslog.h>
+#include <errno.h>
+#include <atalk/logger.h>
#include <sys/types.h>
#include <sys/param.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
+#ifdef TRU64
+#include <sys/mbuf.h>
+#include <net/route.h>
+#endif /* TRU64 */
#include <net/if.h>
#include <net/route.h>
#include <netatalk/endian.h>
* configuration with RTMP.
*/
if ( iface->i_flags & IFACE_PHASE2 ) {
- syslog( LOG_INFO, "rtmp_config ignoring data" );
+ LOG(log_info, logtype_atalkd, "rtmp_config ignoring data" );
return 0;
}
if ( rh->rh_net != iface->i_addr.sat_addr.s_net ) {
if (( iface->i_flags & IFACE_SEED ) &&
rh->rh_net != iface->i_caddr.sat_addr.s_net) {
- syslog( LOG_ERR, "rtmp_config net mismatch %u != %u",
+ LOG(log_error, logtype_atalkd, "rtmp_config net mismatch %u != %u",
ntohs( rh->rh_net ),
ntohs( iface->i_addr.sat_addr.s_net ));
return 1;
return -1;
if (cc) {
- syslog( LOG_ERR, "rtmp_config: can't route %u.%u to loopback: %m",
+ LOG(log_error, logtype_atalkd, "rtmp_config: can't route %u.%u to loopback: %s",
ntohs( iface->i_addr.sat_addr.s_net ),
- iface->i_addr.sat_addr.s_node );
+ iface->i_addr.sat_addr.s_node,
+ strerror(errno) );
}
- syslog( LOG_INFO, "rtmp_config configured %s", iface->i_name );
+ LOG(log_info, logtype_atalkd, "rtmp_config configured %s", iface->i_name );
iface->i_flags |= IFACE_CONFIG;
if ( iface == ciface ) {
ciface = ciface->i_next;
}
}
if ( lr == NULL ) {
- syslog( LOG_ERR, "rtmp_copyzones z -> r without r -> z, abort" );
+ LOG(log_error, logtype_atalkd, "rtmp_copyzones z -> r without r -> z, abort" );
return -1;
}
}
{
struct gate *gate;
- syslog(LOG_INFO, "rtmp_free: %u-%u", ntohs(rtmp->rt_firstnet),
+ LOG(log_info, logtype_atalkd, "rtmp_free: %u-%u", ntohs(rtmp->rt_firstnet),
ntohs(rtmp->rt_lastnet));
if ( rtmp->rt_iprev ) {
rtmp_delinuse( rtmp );
struct gate *gate;
struct rtmptab *rtmp, *found = NULL;
- syslog(LOG_INFO, "rtmp_replace %u-%u", ntohs(replace->rt_firstnet),
+ LOG(log_info, logtype_atalkd, "rtmp_replace %u-%u", ntohs(replace->rt_firstnet),
ntohs(replace->rt_lastnet));
for ( iface = interfaces; iface; iface = iface->i_next ) {
if ((replace->rt_iface != iface) &&
if ( i ) { /* can we get here without r being set? */
if ( r->rt_firstnet != rtmp->rt_firstnet ||
r->rt_lastnet != rtmp->rt_lastnet ) {
- syslog( LOG_INFO, "rtmp_new netrange mismatch %u-%u != %u-%u",
+ LOG(log_info, logtype_atalkd, "rtmp_new netrange mismatch %u-%u != %u-%u",
ntohs( r->rt_firstnet ), ntohs( r->rt_lastnet ),
ntohs( rtmp->rt_firstnet ), ntohs( rtmp->rt_lastnet ));
return 1;
end = data + len;
if ( data >= end ) {
- syslog( LOG_INFO, "rtmp_packet no data" );
+ LOG(log_info, logtype_atalkd, "rtmp_packet no data" );
return 1;
}
* Response and Data.
*/
if ( data + sizeof( struct rtmprdhdr ) > end ) {
- syslog( LOG_INFO, "rtmp_packet no data header" );
+ LOG(log_info, logtype_atalkd, "rtmp_packet no data header" );
return 1;
}
memcpy( &rh, data, sizeof( struct rtmprdhdr ));
/* check rh address against from address */
if ( rh.rh_nodelen != 8 ) {
- syslog( LOG_INFO, "rtmp_packet bad node len (%d)", rh.rh_nodelen );
+ LOG(log_info, logtype_atalkd, "rtmp_packet bad node len (%d)", rh.rh_nodelen );
return 1;
}
if (( from->sat_addr.s_net != 0 &&
from->sat_addr.s_net != rh.rh_net ) ||
from->sat_addr.s_node != rh.rh_node ) {
- syslog( LOG_INFO, "rtmp_packet address mismatch" );
+ LOG(log_info, logtype_atalkd, "rtmp_packet address mismatch" );
return 1;
}
if ( iface->i_flags & IFACE_NOROUTER ) {
/* remove addr to loopback route */
if ((cc = looproute( iface, RTMP_DEL )) < 0) {
- syslog(LOG_ERR, "rtmp_packet: looproute");
+ LOG(log_error, logtype_atalkd, "rtmp_packet: looproute");
return -1;
}
if (cc)
- syslog( LOG_ERR, "rtmp_packet: can't remove loopback: %m" );
+ LOG(log_error, logtype_atalkd, "rtmp_packet: can't remove loopback: %s",
+ strerror(errno) );
iface->i_flags &= ~IFACE_NOROUTER;
iface->i_time = 0;
- syslog( LOG_INFO, "rtmp_packet router has become available" );
+ LOG(log_info, logtype_atalkd, "rtmp_packet router has become available" );
}
if ( iface->i_flags & IFACE_PHASE1 ) {
if (rtmp_config( &rh, iface ) < 0) {
- syslog(LOG_ERR, "rtmp_packet: rtmp_config");
+ LOG(log_error, logtype_atalkd, "rtmp_packet: rtmp_config");
return -1;
}
} else if (zip_getnetinfo( iface ) < 0) {
- syslog(LOG_ERR, "rtmp_packet: zip_getnetinfo");
+ LOG(log_error, logtype_atalkd, "rtmp_packet: zip_getnetinfo");
return -1;
}
return 0;
* Parse first tuple. For phase 2, verify that net is correct.
*/
if ( data + SZ_RTMPTUPLE > end ) {
- syslog( LOG_INFO, "rtmp_packet missing first tuple" );
+ LOG(log_info, logtype_atalkd, "rtmp_packet missing first tuple" );
return 1;
}
memcpy( &rt, data, SZ_RTMPTUPLE );
if ( rt.rt_net == 0 ) {
if ( rt.rt_dist != 0x82 ) {
- syslog( LOG_INFO, "rtmp_packet bad phase 1 version" );
+ LOG(log_info, logtype_atalkd, "rtmp_packet bad phase 1 version" );
return 1;
}
* no extended tuples in this packet.
*/
if ( data + SZ_RTMPTUPLE > end ) {
- syslog( LOG_INFO, "rtmp_packet missing second tuple" );
+ LOG(log_info, logtype_atalkd, "rtmp_packet missing second tuple" );
return 1;
}
memcpy( &rt, data, SZ_RTMPTUPLE );
data += SZ_RTMPTUPLE;
} else if ( rt.rt_dist & 0x80 ) {
if ( data + SZ_RTMPTUPLE > end ) {
- syslog( LOG_INFO, "rtmp_packet missing first range-end" );
+ LOG(log_info, logtype_atalkd, "rtmp_packet missing first range-end" );
return 1;
}
memcpy( &xrt, data, SZ_RTMPTUPLE );
data += SZ_RTMPTUPLE;
if ( xrt.rt_dist != 0x82 ) {
- syslog( LOG_INFO, "rtmp_packet bad phase 2 version" );
+ LOG(log_info, logtype_atalkd, "rtmp_packet bad phase 2 version" );
return 1;
}
*/
if ( rt.rt_net != iface->i_rt->rt_firstnet ||
xrt.rt_net != iface->i_rt->rt_lastnet ) {
- syslog( LOG_INFO, "rtmp_packet interface mismatch" );
+ LOG(log_info, logtype_atalkd, "rtmp_packet interface mismatch" );
return 1;
}
} else {
* might just as well check it.
if ( rt.rt_net != iface->i_rt->rt_firstnet ||
rt.rt_net != iface->i_rt->rt_lastnet ) {
- syslog( LOG_INFO, "rtmp_packet phase 1 interface mismatch" );
+ LOG(log_info, logtype_atalkd, "rtmp_packet phase 1 interface mismatch" );
return 1;
}
*/
#else /* PHASE1NET */
- syslog( LOG_INFO, "rtmp_packet bad first tuple" );
+ LOG(log_info, logtype_atalkd, "rtmp_packet bad first tuple" );
return 1;
#endif /* PHASE1NET */
}
}
if ( !gate ) { /* new gateway */
if (( gate = (struct gate *)malloc( sizeof( struct gate ))) == 0 ) {
- syslog( LOG_ERR, "rtmp_packet: malloc: %m" );
+ LOG(log_error, logtype_atalkd, "rtmp_packet: malloc: %s", strerror(errno) );
return -1;
}
gate->g_next = iface->i_gate;
iface->i_gate->g_prev = gate;
}
iface->i_gate = gate;
- syslog( LOG_INFO, "rtmp_packet gateway %u.%u up",
+ LOG(log_info, logtype_atalkd, "rtmp_packet gateway %u.%u up",
ntohs( gate->g_sat.sat_addr.s_net ),
gate->g_sat.sat_addr.s_node );
}
* ugly.)
*/
if ( rtmp->rt_firstnet != rt.rt_net ) {
- syslog( LOG_INFO, "rtmp_packet firstnet mismatch %u!=%u",
+ LOG(log_info, logtype_atalkd, "rtmp_packet firstnet mismatch %u!=%u",
ntohs( rtmp->rt_firstnet ), ntohs( rt.rt_net ));
return 1;
}
if ( rt.rt_dist & 0x80 ) {
if (( rtmp->rt_flags & RTMPTAB_EXTENDED ) == 0 ) {
- syslog( LOG_INFO, "rtmp_packet extended mismatch %u",
+ LOG(log_info, logtype_atalkd, "rtmp_packet extended mismatch %u",
ntohs( rtmp->rt_firstnet ));
return 1;
}
if ( rtmp->rt_lastnet != xrt.rt_net ) {
- syslog( LOG_INFO, "rtmp_packet lastnet mismatch %u!=%u",
+ LOG(log_info, logtype_atalkd, "rtmp_packet lastnet mismatch %u!=%u",
ntohs( rtmp->rt_lastnet ), ntohs( xrt.rt_net ));
return 1;
}
} else {
if ( rtmp->rt_flags & RTMPTAB_EXTENDED ) {
- syslog( LOG_INFO, "rtmp_packet !extended mismatch %u",
+ LOG(log_info, logtype_atalkd, "rtmp_packet !extended mismatch %u",
ntohs( rtmp->rt_firstnet ));
return 1;
}
if ( rtmp->rt_lastnet != rt.rt_net ) {
- syslog( LOG_INFO, "rtmp_packet lastnet mismatch %u!=%u",
+ LOG(log_info, logtype_atalkd, "rtmp_packet lastnet mismatch %u!=%u",
ntohs( rtmp->rt_lastnet ), ntohs( rt.rt_net ));
return 1;
}
rtmp->rt_hops = ( rt.rt_dist & 0x7f ) + 1;
}
if (rtmp_replace( rtmp ) < 0) {
- syslog(LOG_ERR, "rtmp_packet: rtmp_replace");
+ LOG(log_error, logtype_atalkd, "rtmp_packet: rtmp_replace");
return -1;
}
}
rtmp->rt_hops = ( rt.rt_dist & 0x7f ) + 1;
if ( rtmp->rt_hops > ( rt.rt_dist & 0x7f ) + 1 ) {
if (rtmp_new( rtmp ) < 0) {
- syslog(LOG_ERR, "rtmp_packet: rtmp_new");
+ LOG(log_error, logtype_atalkd, "rtmp_packet: rtmp_new");
return -1;
}
}
rtmp->rt_next = 0;
}
} else if (( rt.rt_dist & 0x7f ) + 1 > RTMPHOPS_MAX ) {
- syslog( LOG_INFO, "rtmp_packet bad hop count from %u.%u for %u",
+ LOG(log_info, logtype_atalkd, "rtmp_packet bad hop count from %u.%u for %u",
ntohs( from->sat_addr.s_net ), from->sat_addr.s_node,
ntohs( rt.rt_net ));
} else { /* new for router */
if (( rtmp = newrt(iface)) == NULL ) {
- syslog( LOG_ERR, "rtmp_packet: newrt: %m" );
+ LOG(log_error, logtype_atalkd, "rtmp_packet: newrt: %s", strerror(errno) );
return -1;
}
rtmp->rt_firstnet = rt.rt_net;
}
if (rtmp_new( rtmp ) < 0) {
- syslog(LOG_ERR, "rtmp_packet: rtmp_new");
+ LOG(log_error, logtype_atalkd, "rtmp_packet: rtmp_new");
return -1;
}
}
data += SZ_RTMPTUPLE;
if ( rt.rt_dist & 0x80 ) {
if ( data + SZ_RTMPTUPLE > end ) {
- syslog( LOG_INFO, "rtmp_packet missing range-end" );
+ LOG(log_info, logtype_atalkd, "rtmp_packet missing range-end" );
return 1;
}
memcpy( &xrt, data, SZ_RTMPTUPLE );
* Make sure we've processed the whole packet.
*/
if ( data != end ) {
- syslog( LOG_INFO, "rtmp_packet length and count mismatch" );
+ LOG(log_info, logtype_atalkd, "rtmp_packet length and count mismatch" );
}
break;
if ( sendto( ap->ap_fd, packet, data - packet, 0,
(struct sockaddr *)from,
sizeof( struct sockaddr_at )) < 0 ) {
- syslog( LOG_ERR, "as_timer sendto: %m" );
+ LOG(log_error, logtype_atalkd, "as_timer sendto: %s", strerror(errno) );
}
} else if ( *data == 2 || *data == 3 ) {
#ifdef DEBUG
from->sat_addr.s_node );
#endif /* DEBUG */
} else {
- syslog( LOG_INFO, "rtmp_packet unknown request from %u.%u\n",
+ LOG(log_info, logtype_atalkd, "rtmp_packet unknown request from %u.%u",
ntohs( from->sat_addr.s_net ), from->sat_addr.s_node );
}
break;
default :
- syslog( LOG_INFO, "rtmp_packet bad ddp type from %u.%u",
+ LOG(log_info, logtype_atalkd, "rtmp_packet bad ddp type from %u.%u",
ntohs( from->sat_addr.s_net ), from->sat_addr.s_node );
return 0;
}
struct atport *ap;
char *data, packet[ 2 ];
- syslog( LOG_INFO, "rtmp_request for %s", iface->i_name );
+ LOG(log_info, logtype_atalkd, "rtmp_request for %s", iface->i_name );
for ( ap = iface->i_ports; ap; ap = ap->ap_next ) {
if ( ap->ap_packet == rtmp_packet ) {
}
}
if ( ap == 0 ) {
- syslog( LOG_ERR, "rtmp_request can't find rtmp socket!" );
+ LOG(log_error, logtype_atalkd, "rtmp_request can't find rtmp socket!" );
return -1;
}
sat.sat_port = ap->ap_port;
if ( sendto( ap->ap_fd, packet, data - packet, 0, (struct sockaddr *)&sat,
sizeof( struct sockaddr_at )) < 0 ) {
- syslog( LOG_ERR, "rtmp_request sendto: %m" );
+ LOG(log_error, logtype_atalkd, "rtmp_request sendto: %s", strerror(errno) );
return -1;
}
return 0;
struct sockaddr_at dst, loop;
if ( cmd == RTMP_DEL && ( iface->i_flags & IFACE_LOOP ) == 0 ) {
- syslog( LOG_ERR, "looproute panic no route" );
+ LOG(log_error, logtype_atalkd, "looproute panic no route" );
return -1;
}
if ( cmd == RTMP_ADD && ( iface->i_flags & IFACE_LOOP )) {
- syslog( LOG_ERR, "looproute panic two routes" );
+ LOG(log_error, logtype_atalkd, "looproute panic two routes" );
return -1;
}
(struct sockaddr *) &dst,
(struct sockaddr *) &gate,
RTF_UP | RTF_GATEWAY )) {
- syslog( LOG_ERR, "route: %u -> %u.%u: %m", net,
- ntohs( gate.sat_addr.s_net ), gate.sat_addr.s_node );
+ LOG(log_error, logtype_atalkd, "route: %u -> %u.%u: %s", net,
+ ntohs( gate.sat_addr.s_net ), gate.sat_addr.s_node,
+ strerror(errno) );
continue;
}
#else /* ! BSD4_4 */
(struct sockaddr_at *) &dst,
(struct sockaddr_at *) &gate,
RTF_UP | RTF_GATEWAY )) {
- syslog( LOG_ERR, "route: %u -> %u.%u: %m", net,
- ntohs( gate.sat_addr.s_net ), gate.sat_addr.s_node );
+ LOG(log_error, logtype_atalkd, "route: %u -> %u.%u: %s", net,
+ ntohs( gate.sat_addr.s_net ), gate.sat_addr.s_node, strerror(errno) );
continue;
}
#endif /* ! BSD4_4 */