mrpd: debug updates
authorAndrew Elder <aelder@audioscience.com>
Fri, 7 Dec 2012 17:10:09 +0000 (12:10 -0500)
committerAndrew Elder <aelder@audioscience.com>
Thu, 3 Jan 2013 13:39:34 +0000 (08:39 -0500)
daemons/mrpd/mrp.c
daemons/mrpd/mrp.h
daemons/mrpd/mrpw.c
daemons/mrpd/msrp.c

index f121b1e..7711530 100644 (file)
@@ -44,7 +44,6 @@
 /* state machine controls */
 int p2pmac;
 
-#if LOG_MRP
 static char *mrp_event_string(int e)
 {
        switch (e) {
@@ -95,6 +94,7 @@ static char *mrp_event_string(int e)
        }
 }
 
+#if LOG_MRP
 static char *mrp_state_string(int s)
 {
        switch (s) {
@@ -297,7 +297,7 @@ static unsigned long lva_next;
 
 int mrp_lvatimer_start(struct mrp_database *mrp_db)
 {
-       int ret;
+       int ret = 0;
        int timeout = 0;
        /* leavealltimer has expired. (10.7.5.22)
         * on expire, sends a LEAVEALL message
@@ -308,11 +308,12 @@ int mrp_lvatimer_start(struct mrp_database *mrp_db)
        timeout = MRP_LVATIMER_VAL + (random() % (MRP_LVATIMER_VAL / 2));
 #if LOG_TIMERS
        if (mrp_db->lva_timer_running)
-               mrpd_log_printf("MRP start leaveAll timer (%d ms) *ALREADY RUNNING* \n", timeout);
+               mrpd_log_printf("MRP leaveAll timer already running \n", timeout);
        else
                mrpd_log_printf("MRP start leaveAll timer (%d ms)\n", timeout);
 #endif
-       ret =  mrpd_timer_start(mrp_db->lva_timer, timeout);
+       if (!mrp_db->lva_timer_running)
+               ret =  mrpd_timer_start(mrp_db->lva_timer, timeout);
        if (ret >= 0)
                mrp_db->lva_timer_running = 1;
        return ret;
@@ -436,6 +437,7 @@ int mrp_applicant_fsm(struct mrp_database *mrp_db, mrp_applicant_attribute_t * a
        int optional = 0;
        int mrp_state = attrib->mrp_state;
        int sndmsg = MRP_SND_NULL;
+       (void)mrp_db;
 
        switch (event) {
        case MRP_EVENT_BEGIN:
@@ -761,7 +763,7 @@ int mrp_applicant_fsm(struct mrp_database *mrp_db, mrp_applicant_attribute_t * a
                break;
 
        default:
-               printf("mrp_applicant_fsm:unexpected event (%d)\n", event);
+               printf("mrp_applicant_fsm:unexpected event %s (%d)\n", mrp_event_string(event), event);
                return -1;
                break;
        }
@@ -770,6 +772,7 @@ int mrp_applicant_fsm(struct mrp_database *mrp_db, mrp_applicant_attribute_t * a
        /*
        See note 6, table 10.3
        */
+#if MRP_USE_TXNOW
        if ((attrib->mrp_state != mrp_state) && (event != MRP_EVENT_TX) && (event != MRP_EVENT_TXLA)) {
                switch (mrp_state) {
                case  MRP_VP_STATE:
@@ -785,6 +788,8 @@ int mrp_applicant_fsm(struct mrp_database *mrp_db, mrp_applicant_attribute_t * a
                        break;
                }
        }
+#endif
+
 #if LOG_MVRP || LOG_MSRP || LOG_MMRP
        if (attrib->mrp_state != mrp_state) {
                mrpd_log_printf("mrp_applicant_fsm event %s, state %s -> %s\n",
@@ -906,7 +911,7 @@ mrp_registrar_fsm(mrp_registrar_attribute_t * attrib,
                /* ignore on soon to be deleted attributes */
                break;
        default:
-               printf("mrp_registrar_fsm:unexpected event (%d)\n", event);
+               printf("mrp_registrar_fsm:unexpected event %s (%d)\n", mrp_event_string(event), event);
                return -1;
                break;
        }
index 91332a3..df33dce 100644 (file)
 
 ******************************************************************************/
 
-/* control debug output on stdout */
-#define LOG_MRP 0
+/* control debug logging output on stdout */
+#define LOG_MRP 1
 #define LOG_MVRP 0
 #define LOG_MMRP 0
-#define LOG_MSRP 0
+#define LOG_MSRP 1
 #define LOG_TIMERS 0
-#define LOG_TXNOW 0
+#define LOG_TXNOW 1
 #define LOG_CLIENT_RECV 0
 #define LOG_CLIENT_SEND 0
 
 #define MRP_ENCODE_YES         0       /* must send */
 #define MRP_ENCODE_OPTIONAL    1       /* send if smaller */
+#define MRP_USE_TXNOW          0       /* use TXNOW (join timer shortcut) */
 
 typedef struct mrp_applicant_attribute {
        int mrp_state;
index 86a6cc3..87d37cb 100644 (file)
@@ -543,8 +543,10 @@ int process_ctl_msg(char *buf, int buflen, struct sockaddr_in *client)
 
        memset(respbuf, 0, sizeof(respbuf));
 
+#if LOG_CLIENT_RECV
        if (logging_enable)
                printf("CMD:%s from CLNT %d\n", buf, client->sin_port);
+#endif
 
        if (buflen < 3) {
                printf("buflen = %d!\b", buflen);
@@ -601,8 +603,10 @@ int mrpd_send_ctl_msg(struct sockaddr_in *client_addr,
        if (INVALID_SOCKET == control_socket)
                return 0;
 
+#if LOG_CLIENT_SEND
        printf("CTL MSG:%s to CLNT %d\n", notify_data,
                       client_addr->sin_port);
+#endif
        rc = sendto(control_socket, notify_data, notify_len,
                    0, (struct sockaddr *)client_addr, sizeof(struct sockaddr));
        return rc;
index 191ad18..bbb30f8 100644 (file)
@@ -55,6 +55,24 @@ extern unsigned char STATION_ADDR[];
 SOCKET msrp_socket;
 struct msrp_database *MSRP_db;
 
+static char *msrp_attrib_type_string(int t)
+{
+       switch (t) {
+       case MSRP_TALKER_ADV_TYPE:
+               return "Talker Advertise";
+       case MSRP_TALKER_FAILED_TYPE:
+               return "Talker Failed";
+       case MSRP_LISTENER_TYPE:
+               return "Listener";
+       case MSRP_DOMAIN_TYPE:
+               return "Domain";
+       default:
+               return "TYPE ???";
+       }
+}
+
+
+
 struct msrp_attribute *msrp_lookup(struct msrp_attribute *rattrib)
 {
        struct msrp_attribute *attrib;
@@ -376,9 +394,9 @@ int msrp_event(int event, struct msrp_attribute *rattrib)
                        rc = mrp_registrar_fsm(&(attrib->registrar),
                                               &(MSRP_db->mrp_db), event);
                        if (-1 == rc) {
-                               printf
-                                   ("MSRP registrar error on attrib->type = %d\n",
-                                    attrib->type);
+                               printf("MSRP registrar error on attrib->type = %s (%d)\n",
+                                               msrp_attrib_type_string(attrib->type),
+                                               attrib->type);
                        }
                        break;
                }
@@ -519,6 +537,10 @@ int msrp_recv_msg()
 
        endmarks = 0;
 
+#if LOG_MSRP
+       mrpd_log_printf("MSRP msrp_recv_msg() START\n");
+#endif
+
        while (mrpdu_msg_ptr < (mrpdu_msg_eof - 2)) {
                mrpdu_msg = (mrpdu_message_t *) mrpdu_msg_ptr;
                if ((mrpdu_msg->AttributeType == 0) &&
@@ -533,6 +555,11 @@ int msrp_recv_msg()
                }
 
                endmarks = 0;
+
+#if LOG_MSRP
+       mrpd_log_printf("MSRP msrp_recv_msg() msg addr 0x%X\n", ((int)mrpdu_msg_ptr) & 0x3);
+#endif
+
                switch (mrpdu_msg->AttributeType) {
                case MSRP_DOMAIN_TYPE:
                        if (mrpdu_msg->AttributeLength != 4) {
@@ -695,6 +722,15 @@ int msrp_recv_msg()
                                    MRPDU_VECT_NUMVALUES(ntohs
                                                         (mrpdu_vectorptr->VectorHeader));
 
+#if LOG_MSRP
+                               mrpd_log_printf("MSRP msrp_recv_msg() LISTENER vector addr 0x%X, n = %d, VectorHeader (ntohs) %d, VectorHeader read %d\n",
+                                               ((int)mrpdu_vectorptr) & 0x3, numvalues,
+                                               ntohs(mrpdu_vectorptr->VectorHeader),
+                                               ((uint8_t *)mrpdu_vectorptr)[0] << 8 | ((uint8_t *)mrpdu_vectorptr)[1]);
+#endif
+
+
+
                                if (0 == numvalues) {
                                        /* 2 byte numvalues + 8 byte FirstValue + (0) vector bytes */
                                        mrpdu_msg_ptr =
@@ -864,6 +900,13 @@ int msrp_recv_msg()
                                                       registrar.macaddr,
                                                       eth->srcaddr, 6);
 
+#if LOG_MSRP
+                                               mrpd_log_printf("MSRP msrp_recv_msg() Listener[%d][%d] attrib %d\n",
+                                                               vectidx,
+                                                               vectevt_idx,
+                                                               vectevt[vectevt_idx]);
+#endif
+
                                                switch (vectevt[vectevt_idx]) {
                                                case MRPDU_NEW:
                                                        msrp_event
@@ -1112,6 +1155,13 @@ int msrp_recv_msg()
                                                       registrar.macaddr,
                                                       eth->srcaddr, 6);
 
+#if LOG_MSRP
+                                               mrpd_log_printf("MSRP msrp_recv_msg() TalkerAdv[%d][%d] attrib %d\n",
+                                                               vectidx,
+                                                               vectevt_idx,
+                                                               vectevt[vectevt_idx]);
+#endif
+
                                                switch (vectevt[vectevt_idx]) {
                                                case MRPDU_NEW:
                                                        msrp_event
@@ -1405,7 +1455,7 @@ int msrp_recv_msg()
                         * we can seek for an endmark to recover .. but this version
                         * dumps the entire packet as malformed
                         */
-                       printf("unrecognized attribute type (%d)\n",
+                       printf("################## unrecognized attribute type (%d)\n",
                               mrpdu_msg->AttributeType);
                        goto out;
                }
@@ -1655,8 +1705,15 @@ msrp_emit_domainvectors(unsigned char *msgbuf, unsigned char *msgbuf_eof,
        attriblistlen = mrpdu_msg_ptr - &(mrpdu_msg->Data[2]);
        mrpdu_msg->Data[0] = (uint8_t) (attriblistlen >> 8);
        mrpdu_msg->Data[1] = (uint8_t) attriblistlen;
+
+#if LOG_MSRP
+       mrpd_log_printf("MSRP msrp_recv_msg() DONE (OK)\n");
+#endif
        return 0;
  oops:
+#if LOG_MSRP
+       mrpd_log_printf("MSRP msrp_recv_msg() DONE (OOPS)\n");
+#endif
        /* an internal error - caller should assume TXLAF */
        *bytes_used = 0;
        return -1;