X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=etc%2Fatalkd%2Frtmp.c;h=1c82a4caffe611955e8c05c7ad5f31a704dd107d;hb=c78b39f491fcb71c19f3510da169e7b3790f649c;hp=e35b89a7bb121d2b468c4c74cb841652e74b1b34;hpb=20ff799010f95913358cad305bcdf6b0964832fb;p=netatalk.git diff --git a/etc/atalkd/rtmp.c b/etc/atalkd/rtmp.c index e35b89a7..1c82a4ca 100644 --- a/etc/atalkd/rtmp.c +++ b/etc/atalkd/rtmp.c @@ -1,5 +1,5 @@ /* - * $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. @@ -11,11 +11,16 @@ #include #include -#include +#include +#include #include #include #include #include +#ifdef TRU64 +#include +#include +#endif /* TRU64 */ #include #include #include @@ -104,7 +109,7 @@ static int rtmp_config( rh, iface ) * 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; } @@ -114,7 +119,7 @@ static int rtmp_config( rh, iface ) 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; @@ -137,12 +142,13 @@ static int rtmp_config( rh, iface ) 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; @@ -237,7 +243,7 @@ static int rtmp_copyzones( to, from ) } } 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; } } @@ -255,7 +261,7 @@ void rtmp_free( rtmp ) { 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 ); @@ -295,7 +301,7 @@ int rtmp_replace( replace ) 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) && @@ -370,7 +376,7 @@ static int rtmp_new( rtmp ) 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; @@ -414,7 +420,7 @@ int rtmp_packet( ap, from, data, len ) end = data + len; if ( data >= end ) { - syslog( LOG_INFO, "rtmp_packet no data" ); + LOG(log_info, logtype_atalkd, "rtmp_packet no data" ); return 1; } @@ -432,7 +438,7 @@ int rtmp_packet( ap, from, data, len ) * 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 )); @@ -440,13 +446,13 @@ int rtmp_packet( ap, from, data, len ) /* 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; } @@ -454,24 +460,25 @@ int rtmp_packet( ap, from, data, len ) 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; @@ -485,7 +492,7 @@ int rtmp_packet( ap, from, data, len ) * 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 ); @@ -493,7 +500,7 @@ int rtmp_packet( ap, from, data, len ) 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; } @@ -503,21 +510,21 @@ int rtmp_packet( ap, from, data, len ) * 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; } @@ -526,7 +533,7 @@ int rtmp_packet( ap, from, data, len ) */ 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 { @@ -537,12 +544,12 @@ int rtmp_packet( ap, from, data, len ) * 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 */ } @@ -558,7 +565,7 @@ int rtmp_packet( ap, from, data, len ) } 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; @@ -570,7 +577,7 @@ int rtmp_packet( ap, from, data, len ) 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 ); } @@ -606,29 +613,29 @@ int rtmp_packet( ap, from, data, len ) * 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; } @@ -666,7 +673,7 @@ int rtmp_packet( ap, from, data, len ) 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; } } @@ -674,7 +681,7 @@ int rtmp_packet( ap, from, data, len ) 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; } } @@ -692,12 +699,12 @@ int rtmp_packet( ap, from, data, len ) 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; @@ -724,7 +731,7 @@ int rtmp_packet( ap, from, data, len ) } if (rtmp_new( rtmp ) < 0) { - syslog(LOG_ERR, "rtmp_packet: rtmp_new"); + LOG(log_error, logtype_atalkd, "rtmp_packet: rtmp_new"); return -1; } } @@ -736,7 +743,7 @@ int rtmp_packet( ap, from, data, len ) 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 ); @@ -748,7 +755,7 @@ int rtmp_packet( ap, from, data, len ) * 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; @@ -784,7 +791,7 @@ int rtmp_packet( ap, from, data, len ) 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 @@ -793,13 +800,13 @@ int rtmp_packet( ap, from, data, len ) 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; } @@ -814,7 +821,7 @@ int rtmp_request( iface ) 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 ) { @@ -822,7 +829,7 @@ int rtmp_request( iface ) } } 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; } @@ -843,7 +850,7 @@ int rtmp_request( iface ) 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; @@ -857,12 +864,12 @@ int looproute( iface, cmd ) 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; } @@ -951,8 +958,9 @@ int gateroute( command, rtmp ) (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 */ @@ -960,8 +968,8 @@ int gateroute( command, rtmp ) (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 */