/******************************************************************************* ** ** Diagnostic Output Code for RPC ** ** This code is part of the RPC system from CERN DD/OC and collaborators. ** ** ** ** Sep 90 Taken from rpc_eth_dummy.c ** */ #include #define TS /* We want TS_layer visibility */ #define TCP #define ETHERNET #define V24 /* we want to see all transport types */ #include "syspec.h" #include "rpcrts.h" /* RPC structures including TS layer */ #include "rpc_code.h" /*Coding conventions and trace */ /* UTILITY ROUTINES ** ** Print out socket descriptor ** --------------------------- ** ** */ #ifdef __STDC__ dump_socket(socket_type soc) #else dump_socket(soc) socket_type soc; #endif { if (rpc_trace) { UTRACE(tfp," Socket at %lx:\n", (long int) soc); UTRACE(tfp," next @ %lx\n", (long int)soc->soc_next); UTRACE(tfp," astadr = %lx\n", (long int)soc->soc_astadr); UTRACE(tfp," astprm = %lx\n", (long int)soc->soc_astprm); /* UTRACE(tfp," last call sent @ %lx\n", (long int)soc->soc_last_call_sent); UTRACE(tfp," last reply sent @ %lx\n", (long int)soc->soc_last_reply_sent); UTRACE(tfp," event flag num = %lx\n", soc->soc_efn; */ UTRACE(tfp," medium = "); switch(soc->soc_medium) { case invalid_medium: UTRACE(tfp, "INVALID (ZERO)\n"); break; case v24: UTRACE(tfp, "V24\n"); break; case ether: UTRACE(tfp, "ETHERNET\n"); /* cut out for now UTRACE(tfp, " Address filter: %2x_%2x_%2x_%2x_%2x_%2x %2x_%2x\n", soc->mdp.soc_ether.soc_addr_filter[0], soc->mdp.soc_ether.soc_addr_filter[1], soc->mdp.soc_ether.soc_addr_filter[2], soc->mdp.soc_ether.soc_addr_filter[3], soc->mdp.soc_ether.soc_addr_filter[4], soc->mdp.soc_ether.soc_addr_filter[5], soc->mdp.soc_ether.soc_type_filter.h, soc->mdp.soc_ether.soc_type_filter.l); UTRACE(tfp, " Address mask: %2x_%2x_%2x_%2x_%2x_%2x %2x_%2x\n", soc->mdp.soc_ether.soc_addr_mask[0], soc->mdp.soc_ether.soc_addr_mask[1], soc->mdp.soc_ether.soc_addr_mask[2], soc->mdp.soc_ether.soc_addr_mask[3], soc->mdp.soc_ether.soc_addr_mask[4], soc->mdp.soc_ether.soc_addr_mask[5], soc->mdp.soc_ether.soc_type_mask.h, soc->mdp.soc_ether.soc_type_mask.l); UTRACE(tfp, " Header of last packet received on this socket:\n"); UTRACE(tfp, " To: %2x_%2x_%2x_%2x_%2x_%2x\n", soc->mdp.soc_ether.soc_rx_dest_addr[0], soc->mdp.soc_ether.soc_rx_dest_addr[1], soc->mdp.soc_ether.soc_rx_dest_addr[2], soc->mdp.soc_ether.soc_rx_dest_addr[3], soc->mdp.soc_ether.soc_rx_dest_addr[4], soc->mdp.soc_ether.soc_rx_dest_addr[5]); UTRACE(tfp, " From: %2x_%2x_%2x_%2x_%2x_%2x\n", soc->mdp.soc_ether.soc_rx_source_addr[0], soc->mdp.soc_ether.soc_rx_source_addr[1], soc->mdp.soc_ether.soc_rx_source_addr[2], soc->mdp.soc_ether.soc_rx_source_addr[3], soc->mdp.soc_ether.soc_rx_source_addr[4], soc->mdp.soc_ether.soc_rx_source_addr[5]); UTRACE(tfp, " Ptype: %2x_%2x\n", soc->mdp.soc_ether.soc_rx_protocol_type.h, soc->mdp.soc_ether.soc_rx_protocol_type.l); */ break; decnet: UTRACE(tfp, "DECNET\n"); break; ieee: UTRACE(tfp, "IEEE\n"); break; x25: UTRACE(tfp, "X25\n"); break; drb: UTRACE(tfp, "DRB/CHI/HVIOR link\n"); break; udp: UTRACE(tfp, "UDP/IP\n"); break; tcp: UTRACE(tfp, "TCP/IP\n"); break; default: UTRACE(tfp,"Junk: hex %x\n", (int)soc->soc_medium); } /*switch */ UTRACE(tfp,"\n"); } /* end if trace */ } /* dump socket */ /* Dump RPC Message Internal bits dump_message() ** ------------------------------ ** */ #ifdef __STDC__ void dump_message(rpc_message_pointer mes) #else void dump_message(mes) rpc_message_pointer mes; #endif { int i; if (rpc_trace) { UTRACE(tfp, " Message at %lx:\n", (long int)mes); UTRACE(tfp, " Next at %lx", (long int)mes->m_next); UTRACE(tfp, " Status is %lx\n", (long int)mes->m_status); UTRACE(tfp, " Socket at %lx", (long int)mes->m_socket); UTRACE(tfp, " Index is %lx\n", (long int)mes->m_index); UTRACE(tfp, " Protocol header:\n"); UTRACE(tfp, " "); for(i=0; i<16; i++) UTRACE(tfp, "%2x ", (int)(((unsigned char*)(&mes->header))[i])); UTRACE(tfp, "\n"); UTRACE(tfp, "\n"); } }