switch (notify) {
case MRP_NOTIFY_NEW:
- snprintf(msgbuf, MAX_MRPD_CMDSZ - 1, "MNE %s", stage);
+ snprintf(msgbuf, MAX_MRPD_CMDSZ - 1, "MNE %s\n", stage);
break;
case MRP_NOTIFY_JOIN:
- snprintf(msgbuf, MAX_MRPD_CMDSZ - 1, "MJO %s", stage);
+ snprintf(msgbuf, MAX_MRPD_CMDSZ - 1, "MJO %s\n", stage);
break;
case MRP_NOTIFY_LV:
- snprintf(msgbuf, MAX_MRPD_CMDSZ - 1, "MLE %s", stage);
+ snprintf(msgbuf, MAX_MRPD_CMDSZ - 1, "MLE %s\n", stage);
break;
default:
goto free_msgbuf;
attrib = MMRP_db->attrib_list;
if (attrib == NULL) {
- sprintf(msgbuf, "Empty");
+ sprintf(msgbuf, "MMRP:Empty\n");
}
while (NULL != attrib) {
*/
/* XXX */
- printf("RESP:%s from SRV %d (bytes=%d)\n", buf, client->sin_port, buflen);
+ if (buf[1] == ':')
+ printf("?? RESP:\n%s", buf);
+ else
+ printf("MRPD ---> %s", buf);
fflush(stdout);
return(0);
}
msg.msg_namelen = sizeof(client_addr);
msg.msg_iov = &iov;
msg.msg_iovlen = 1;
- printf("recv msg ... \n");
bytes = recvmsg(control_socket, &msg, 0); if (bytes < 0) goto out;
return(process_ctl_msg(msgbuf, bytes, &client_addr) );
out:
- printf("recv'd bad msg ... \n");
+ //printf("recv'd bad msg ... \n");
free (msgbuf);
return(-1);
inet_aton("127.0.0.1", &addr.sin_addr);
addr_len = sizeof(addr);
-printf("sending message\n");
+ //printf("sending message\n");
if (control_socket != -1)
return(sendto(control_socket, notify_data, notify_len, 0, (struct sockaddr *)&addr, addr_len));
int c;
int rc = 0;
char *msgbuf;
+ int status;
for (;;) {
c = getopt(argc, argv, "hdlmvsi:");
sprintf(msgbuf,"M++:M=010203040506");
rc = send_control_msg(msgbuf, 1500 );
-
memset(msgbuf,0,1500);
sprintf(msgbuf,"M++:M=ffffffffffff");
rc = send_control_msg(msgbuf, 1500 );
-
memset(msgbuf,0,1500);
sprintf(msgbuf,"V++:I=0002");
rc = send_control_msg(msgbuf, 1500 );
-#endif
memset(msgbuf,0,1500);
sprintf(msgbuf,"M++:M=060504030201");
rc = send_control_msg(msgbuf, 1500 );
sprintf(msgbuf,"M--:S=1");
rc = send_control_msg(msgbuf, 1500 );
-
- memset(msgbuf,0,1500);
- sprintf(msgbuf,"V++:I=0002");
- rc = send_control_msg(msgbuf, 1500 );
-
sprintf(msgbuf,"V--:I=0002");
rc = send_control_msg(msgbuf, 1500 );
sprintf(msgbuf,"S--:S=DEADBEEFBADFCA11");
rc = send_control_msg(msgbuf, 1500);
-
memset(msgbuf,0,1500);
sprintf(msgbuf,"S++:S=FFEEDDCCBBAA9988,A=112233445567,V=0002,Z=576,I=8000,P=96,L=1000");
rc = send_control_msg(msgbuf, 1500);
sprintf(msgbuf,"S-L:L=F00F00F00F00F000");
rc = send_control_msg(msgbuf, 1500);
+#endif
+
+ memset(msgbuf,0,1500);
+ sprintf(msgbuf,"V++:I=0002");
+ rc = send_control_msg(msgbuf, 1500 );
+
+ memset(msgbuf,0,1500);
+ sprintf(msgbuf,"S+L:L=0050c24edb0a0001,D=2");
+ rc = send_control_msg(msgbuf, 1500);
do {
memset(msgbuf,0,1500);
memset(msgbuf,0,1500);
sprintf(msgbuf,"S??");
rc = send_control_msg(msgbuf, 1500 );
- recv_ctl_msg();
+ status = 0;
+ while (status >= 0) {
+ status = recv_ctl_msg();
+ }
sleep(1);
} while (1);
out:
listen_declare_end = listen_declare_idx;
+ printf("######listen_declare_end %d\n", listen_declare_end);
+
for (listen_declare_idx = 0;
listen_declare_idx < ((listen_declare_end / 4) * 4);
listen_declare_idx += 4) {
switch (notify) {
case MRP_NOTIFY_NEW:
- sprintf(msgbuf, "SNE %s %s", variant, regsrc);
+ sprintf(msgbuf, "SNE %s %s\n", variant, regsrc);
break;
case MRP_NOTIFY_JOIN:
- sprintf(msgbuf, "SJO %s %s", variant, regsrc);
+ sprintf(msgbuf, "SJO %s %s\n", variant, regsrc);
break;
case MRP_NOTIFY_LV:
- sprintf(msgbuf, "SLE %s %s", variant, regsrc);
+ sprintf(msgbuf, "SLE %s %s\n", variant, regsrc);
break;
default:
goto free_msgbuf;
msgbuf_wrptr = msgbuf;
attrib = MSRP_db->attrib_list;
+ if (attrib == NULL) {
+ sprintf(msgbuf, "MSRP:Empty\n");
+ }
while (NULL != attrib) {
if (MSRP_LISTENER_TYPE == attrib->type) {
attrib->registrar.macaddr[1],
attrib->registrar.macaddr[2],
attrib->registrar.macaddr[3],
- attrib->registrar.macaddr[4], attrib->registrar.macaddr[5]);
+ attrib->registrar.macaddr[4],
+ attrib->registrar.macaddr[5]);
+
switch (attrib->registrar.mrp_state) {
case MRP_IN_STATE:
- sprintf(stage, "VIN %s %s\n", variant, regsrc);
+ sprintf(stage, "VIN %s %s", variant, regsrc);
break;
case MRP_LV_STATE:
- sprintf(stage, "VLV %s %s\n", variant, regsrc);
+ sprintf(stage, "VLV %s %s", variant, regsrc);
break;
case MRP_MT_STATE:
- sprintf(stage, "VMT %s %s\n", variant, regsrc);
+ sprintf(stage, "VMT %s %s", variant, regsrc);
break;
default:
break;
switch (notify) {
case MRP_NOTIFY_NEW:
- snprintf(msgbuf, MAX_MRPD_CMDSZ - 1, "VNE %s", stage);
+ snprintf(msgbuf, MAX_MRPD_CMDSZ - 1, "VNE %s\n", stage);
break;
case MRP_NOTIFY_JOIN:
- snprintf(msgbuf, MAX_MRPD_CMDSZ - 1, "VJO %s", stage);
+ snprintf(msgbuf, MAX_MRPD_CMDSZ - 1, "VJO %s\n", stage);
break;
case MRP_NOTIFY_LV:
- snprintf(msgbuf, MAX_MRPD_CMDSZ - 1, "VLE %s", stage);
+ snprintf(msgbuf, MAX_MRPD_CMDSZ - 1, "VLE %s\n", stage);
break;
default:
goto free_msgbuf;
char *variant;
char *regsrc;
struct mvrp_attribute *attrib;
+ char mrp_state[8];
msgbuf = (char *)malloc(MAX_MRPD_CMDSZ);
if (NULL == msgbuf)
msgbuf_wrptr = msgbuf;
attrib = MVRP_db->attrib_list;
+ if (attrib == NULL) {
+ sprintf(msgbuf, "MVRP:Empty\n");
+ }
while (NULL != attrib) {
- sprintf(variant, "%04x", attrib->attribute);
- sprintf(regsrc, "R=%02x%02x%02x%02x%02x%02x",
+ sprintf(variant, "V:I=%04x", attrib->attribute);
+
+ mrp_decode_state(&attrib->registrar, &attrib->applicant,
+ mrp_state, sizeof(mrp_state));
+
+ sprintf(regsrc, "R=%02x%02x%02x%02x%02x%02x %s",
attrib->registrar.macaddr[0],
attrib->registrar.macaddr[1],
attrib->registrar.macaddr[2],
attrib->registrar.macaddr[3],
attrib->registrar.macaddr[4],
- attrib->registrar.macaddr[5]);
- switch (attrib->registrar.mrp_state) {
- case MRP_IN_STATE:
- sprintf(stage, "VIN %s %s\n", variant, regsrc);
- break;
- case MRP_LV_STATE:
- sprintf(stage, "VLV %s %s\n", variant, regsrc);
- break;
- case MRP_MT_STATE:
- sprintf(stage, "VMT %s %s\n", variant, regsrc);
- break;
- default:
- break;
- }
+ attrib->registrar.macaddr[5],
+ mrp_state);
+
+ sprintf(stage, "%s %s\n", variant, regsrc);
sprintf(msgbuf_wrptr, "%s", stage);
msgbuf_wrptr += strnlen(stage, 128);
attrib = attrib->next;