From: Andrew Elder Date: Tue, 18 Sep 2012 16:50:04 +0000 (-0400) Subject: mrpd: updates to support Windows compile X-Git-Tag: submit/tizen/20130820.101009~36^2^2~53 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=94ee55b27bcf72c2d6d7a318c7fb3b5a74c53611;p=profile%2Fivi%2FOpenAVB.git mrpd: updates to support Windows compile --- diff --git a/daemons/mrpd/mmrp.c b/daemons/mrpd/mmrp.c index 4bb7800..57db30f 100644 --- a/daemons/mrpd/mmrp.c +++ b/daemons/mrpd/mmrp.c @@ -33,12 +33,12 @@ * MMRP protocol (part of 802.1Q-2011) */ -#include + #include #include #include #include -#include + #include "mrpd.h" #include "mrp.h" @@ -419,12 +419,12 @@ int mmrp_recv_msg() if (MMRP_PROT_VER != mrpdu->ProtocolVersion) /* should accept */ goto out; - mrpdu_msg_ptr = (unsigned char *)mrpdu->MessageList; + mrpdu_msg_ptr = MRPD_GET_MRPDU_MESSAGE_LIST(mrpdu); mrpdu_msg_eof = (unsigned char *)mrpdu_msg_ptr; mrpdu_msg_eof += bytes; mrpdu_msg_eof -= sizeof(eth_hdr_t); - mrpdu_msg_eof -= offsetof(mrpdu_t, MessageList); + mrpdu_msg_eof -= MRPD_OFFSETOF_MRPD_GET_MRPDU_MESSAGE_LIST; endmarks = 0; @@ -452,9 +452,8 @@ int mmrp_recv_msg() /* AttributeListLength not used for MMRP, hence * Data points to the beginning of the VectorAttributes */ - mrpdu_vectorptr = - (mrpdu_vectorattrib_t *) mrpdu_msg->Data; - mrpdu_msg_ptr = (u_int8_t *) mrpdu_vectorptr; + mrpdu_vectorptr = MRPD_GET_MRPDU_MESSAGE_VECTOR(mrpdu_msg, 0); + mrpdu_msg_ptr = (uint8_t *) mrpdu_vectorptr; while (! ((mrpdu_msg_ptr[0] == 0) @@ -581,9 +580,8 @@ int mmrp_recv_msg() /* AttributeListLength not used for MMRP, hence * Data points to the beginning of the VectorAttributes */ - mrpdu_vectorptr = - (mrpdu_vectorattrib_t *) mrpdu_msg->Data; - mrpdu_msg_ptr = (u_int8_t *) mrpdu_vectorptr; + mrpdu_vectorptr = MRPD_GET_MRPDU_MESSAGE_VECTOR(mrpdu_msg, 0); + mrpdu_msg_ptr = (uint8_t *) mrpdu_vectorptr; while (! ((mrpdu_msg_ptr[0] == 0) @@ -741,7 +739,7 @@ mmrp_emit_svcvectors(unsigned char *msgbuf, unsigned char *msgbuf_eof, attrib = MMRP_db->attrib_list; - mrpdu_vectorptr = (mrpdu_vectorattrib_t *) mrpdu_msg->Data; + mrpdu_vectorptr = MRPD_GET_MRPDU_MESSAGE_VECTOR(mrpdu_msg, 0); while ((mrpdu_msg_ptr < (mrpdu_msg_eof - 2)) && (NULL != attrib)) { @@ -919,7 +917,7 @@ mmrp_emit_svcvectors(unsigned char *msgbuf, unsigned char *msgbuf_eof, } - if (mrpdu_vectorptr == (mrpdu_vectorattrib_t *) mrpdu_msg->Data) { + if (mrpdu_vectorptr == MRPD_GET_MRPDU_MESSAGE_VECTOR(mrpdu_msg, 0)) { *bytes_used = 0; return 0; } @@ -965,7 +963,7 @@ mmrp_emit_macvectors(unsigned char *msgbuf, unsigned char *msgbuf_eof, attrib = MMRP_db->attrib_list; - mrpdu_vectorptr = (mrpdu_vectorattrib_t *) mrpdu_msg->Data; + mrpdu_vectorptr = MRPD_GET_MRPDU_MESSAGE_VECTOR(mrpdu_msg, 0); while ((mrpdu_msg_ptr < (mrpdu_msg_eof - 2)) && (NULL != attrib)) { @@ -1149,7 +1147,7 @@ mmrp_emit_macvectors(unsigned char *msgbuf, unsigned char *msgbuf_eof, mrpdu_vectorptr = (mrpdu_vectorattrib_t *) mrpdu_msg_ptr; } - if (mrpdu_vectorptr == (mrpdu_vectorattrib_t *) mrpdu_msg->Data) { + if (mrpdu_vectorptr == MRPD_GET_MRPDU_MESSAGE_VECTOR(mrpdu_msg, 0)) { *bytes_used = 0; return 0; } @@ -1214,7 +1212,7 @@ int mmrp_txpdu(void) */ mrpdu->ProtocolVersion = MMRP_PROT_VER; - mrpdu_msg_ptr = (unsigned char *)mrpdu->MessageList; + mrpdu_msg_ptr = MRPD_GET_MRPDU_MESSAGE_LIST(mrpdu); mrpdu_msg_eof = (unsigned char *)msgbuf + MAX_FRAME_SIZE; /* @@ -1267,7 +1265,7 @@ int mmrp_txpdu(void) /* endmark */ - if (mrpdu_msg_ptr == (unsigned char *)mrpdu->MessageList) { + if (mrpdu_msg_ptr == MRPD_GET_MRPDU_MESSAGE_LIST(mrpdu)) { free(msgbuf); return 0; } diff --git a/daemons/mrpd/mrp.c b/daemons/mrpd/mrp.c index 6fc111a..8c67c87 100644 --- a/daemons/mrpd/mrp.c +++ b/daemons/mrpd/mrp.c @@ -32,12 +32,11 @@ /* * MRP protocol (part of 802.1Q-2011) */ -#include + #include #include #include #include -#include #include "mrpd.h" #include "mrp.h" diff --git a/daemons/mrpd/mrpd.h b/daemons/mrpd/mrpd.h index 69980a4..f0adddd 100644 --- a/daemons/mrpd/mrpd.h +++ b/daemons/mrpd/mrpd.h @@ -36,7 +36,7 @@ /* Operating specific defines */ #if defined WIN32 -#include +#include struct win_timer { void *timer_struct; }; @@ -79,30 +79,40 @@ typedef struct eth_hdr { typedef struct mrpdu_message { uint8_t AttributeType; uint8_t AttributeLength; /* length of FirstValue */ - uint8_t Data[]; - /* parsing of the data field is application specific - either + /* Microsoft does not support 0 length arrays + * uint8_t Data[]; + * parsing of the data field is application specific - either * a ushort with an attribute list length followed by vector * attributes, or just a list of vector attributes ... */ /* table should have a trailing NULL (0x0000) indicating the ENDMARK */ } mrpdu_message_t; +#define MRPD_GET_MRPDU_MESSAGE_VECTOR(a,n) (mrpdu_vectorattrib_t *) \ + ((unsigned char *)&((a)->AttributeType) + 2 + n) + +#define MRPD_SET_MRPDU_MESSAGE_DATA(a, n, d) \ + *(&a->AttributeLength + 1 + n) = d typedef struct mrpdu { uint8_t ProtocolVersion; - mrpdu_message_t MessageList[]; - /* mrpdu should have trailing NULL (0x0000) indicating the ENDMARK */ + /* Microsoft does not support 0 length arrays + * mrpdu_message_t MessageList[]; + * mrpdu should have trailing NULL (0x0000) indicating the ENDMARK */ } mrpdu_t; +#define MRPD_GET_MRPDU_MESSAGE_LIST(a) ((unsigned char *)&((a)->ProtocolVersion) + 1) +#define MRPD_OFFSETOF_MRPD_GET_MRPDU_MESSAGE_LIST (1) + #define MAX_FRAME_SIZE 2000 #define MRPD_PORT_DEFAULT 7500 -#define MAX_MRPD_CMDSZ (1500) +#define MAX_MRPD_CMDSZ (1500) int mrpd_timer_start(HTIMER timerfd, unsigned long value_ms); int mrpd_timer_stop(HTIMER timerfd); int mrpd_send_ctl_msg(struct sockaddr_in *client_addr, char *notify_data, int notify_len); -int mrpd_init_protocol_socket(u_int16_t etype, int *sock, +int mrpd_init_protocol_socket(uint16_t etype, int *sock, unsigned char *multicast_addr); int mrpd_recvmsgbuf(SOCKET sock, char **buf); diff --git a/daemons/mrpd/msrp.c b/daemons/mrpd/msrp.c index 08075ff..ed4c585 100644 --- a/daemons/mrpd/msrp.c +++ b/daemons/mrpd/msrp.c @@ -32,12 +32,11 @@ /* * MSRP protocol (part of 802.1Q-2011) */ -#include + #include #include #include #include -#include #include "mrpd.h" #include "mrp.h" @@ -412,7 +411,7 @@ struct msrp_attribute *msrp_alloc() return attrib; } -void msrp_increment_streamid(u_int8_t *streamid) +void msrp_increment_streamid(uint8_t *streamid) { int i; @@ -494,12 +493,12 @@ int msrp_recv_msg() if (MSRP_PROT_VER != mrpdu->ProtocolVersion) { /* XXX should accept ... */ goto out; } - mrpdu_msg_ptr = (unsigned char *)mrpdu->MessageList; + mrpdu_msg_ptr = MRPD_GET_MRPDU_MESSAGE_LIST(mrpdu); mrpdu_msg_eof = (unsigned char *)mrpdu_msg_ptr; mrpdu_msg_eof += bytes; mrpdu_msg_eof -= sizeof(eth_hdr_t); - mrpdu_msg_eof -= offsetof(mrpdu_t, MessageList); + mrpdu_msg_eof -= MRPD_OFFSETOF_MRPD_GET_MRPDU_MESSAGE_LIST; endmarks = 0; @@ -526,9 +525,8 @@ int msrp_recv_msg() goto out; } - mrpdu_vectorptr = - (mrpdu_vectorattrib_t *)&(mrpdu_msg->Data[2]); - mrpdu_msg_ptr = (u_int8_t *) mrpdu_vectorptr; + mrpdu_vectorptr = MRPD_GET_MRPDU_MESSAGE_VECTOR(mrpdu_msg,2); + mrpdu_msg_ptr = (uint8_t *) mrpdu_vectorptr; while (! ((mrpdu_msg_ptr[0] == 0) && (mrpdu_msg_ptr[1] == 0))) { @@ -671,9 +669,8 @@ int msrp_recv_msg() } /* MSRP uses AttributeListLength ... */ - mrpdu_vectorptr = - (mrpdu_vectorattrib_t *)&(mrpdu_msg->Data[2]); - mrpdu_msg_ptr = (u_int8_t *)mrpdu_vectorptr; + mrpdu_vectorptr = MRPD_GET_MRPDU_MESSAGE_VECTOR(mrpdu_msg, 2); + mrpdu_msg_ptr = (uint8_t *)mrpdu_vectorptr; while (! ((mrpdu_msg_ptr[0] == 0) @@ -933,9 +930,8 @@ int msrp_recv_msg() } /* MSRP uses AttributeListLength ... */ - mrpdu_vectorptr = - (mrpdu_vectorattrib_t *)&(mrpdu_msg->Data[2]); - mrpdu_msg_ptr = (u_int8_t *)mrpdu_vectorptr; + mrpdu_vectorptr = MRPD_GET_MRPDU_MESSAGE_VECTOR(mrpdu_msg, 2); + mrpdu_msg_ptr = (uint8_t *)mrpdu_vectorptr; while (! ((mrpdu_msg_ptr[0] == 0) @@ -948,7 +944,7 @@ int msrp_recv_msg() if (0 == numvalues) { /* 2 byte numvalues + 25 byte FirstValue + (0) vector bytes */ mrpdu_msg_ptr = - (u_int8_t *) mrpdu_vectorptr; + (uint8_t *) mrpdu_vectorptr; mrpdu_msg_ptr += 27; mrpdu_vectorptr = @@ -1150,9 +1146,8 @@ int msrp_recv_msg() } /* MSRP uses AttributeListLength ... */ - mrpdu_vectorptr = - (mrpdu_vectorattrib_t *)&(mrpdu_msg->Data[2]); - mrpdu_msg_ptr = (u_int8_t *)mrpdu_vectorptr; + mrpdu_vectorptr = MRPD_GET_MRPDU_MESSAGE_VECTOR(mrpdu_msg, 2); + mrpdu_msg_ptr = (uint8_t *)mrpdu_vectorptr; while (! ((mrpdu_msg_ptr[0] == 0) && (mrpdu_msg_ptr[1] == 0))) { @@ -1430,7 +1425,7 @@ msrp_emit_talkvectors(unsigned char *msgbuf, unsigned char *msgbuf_eof, attrib = MSRP_db->attrib_list; - mrpdu_vectorptr = (mrpdu_vectorattrib_t *)&(mrpdu_msg->Data[2]); + mrpdu_vectorptr = MRPD_GET_MRPDU_MESSAGE_VECTOR(mrpdu_msg, 2); while ((mrpdu_msg_ptr < (mrpdu_msg_eof - 2)) && (NULL != attrib)) { @@ -1651,7 +1646,7 @@ msrp_emit_talkvectors(unsigned char *msgbuf, unsigned char *msgbuf_eof, } - if (mrpdu_vectorptr == (mrpdu_vectorattrib_t *)&(mrpdu_msg->Data[2])) { + if (mrpdu_vectorptr == MRPD_GET_MRPDU_MESSAGE_VECTOR(mrpdu_msg, 2)) { *bytes_used = 0; return 0; } @@ -1664,9 +1659,9 @@ msrp_emit_talkvectors(unsigned char *msgbuf, unsigned char *msgbuf_eof, *bytes_used = (mrpdu_msg_ptr - msgbuf); - attriblistlen = mrpdu_msg_ptr - &(mrpdu_msg->Data[2]); - mrpdu_msg->Data[0] = (u_int8_t) (attriblistlen >> 8); - mrpdu_msg->Data[1] = (u_int8_t) attriblistlen; + attriblistlen = mrpdu_msg_ptr - (uint8_t *)MRPD_GET_MRPDU_MESSAGE_VECTOR(mrpdu_msg, 2); + MRPD_SET_MRPDU_MESSAGE_DATA(mrpdu_msg, 0, (uint8_t)(attriblistlen >> 8)); + MRPD_SET_MRPDU_MESSAGE_DATA(mrpdu_msg, 1, (uint8_t)attriblistlen); return 0; oops: /* an internal error - caller should assume TXLAF */ @@ -1711,7 +1706,7 @@ msrp_emit_listenvectors(unsigned char *msgbuf, unsigned char *msgbuf_eof, attrib = MSRP_db->attrib_list; - mrpdu_vectorptr = (mrpdu_vectorattrib_t *)&(mrpdu_msg->Data[2]); + mrpdu_vectorptr = MRPD_GET_MRPDU_MESSAGE_VECTOR(mrpdu_msg, 2); while ((mrpdu_msg_ptr < (mrpdu_msg_eof - 2)) && (NULL != attrib)) { @@ -1971,7 +1966,7 @@ msrp_emit_listenvectors(unsigned char *msgbuf, unsigned char *msgbuf_eof, mrpdu_vectorptr = (mrpdu_vectorattrib_t *) mrpdu_msg_ptr; } - if (mrpdu_vectorptr == (mrpdu_vectorattrib_t *)&(mrpdu_msg->Data[2])) { + if (mrpdu_vectorptr == MRPD_GET_MRPDU_MESSAGE_VECTOR(mrpdu_msg, 2)) { if (listen_declare) free(listen_declare); *bytes_used = 0; @@ -1986,9 +1981,9 @@ msrp_emit_listenvectors(unsigned char *msgbuf, unsigned char *msgbuf_eof, *bytes_used = (mrpdu_msg_ptr - msgbuf); - attriblistlen = mrpdu_msg_ptr - &(mrpdu_msg->Data[2]); - mrpdu_msg->Data[0] = (u_int8_t) (attriblistlen >> 8); - mrpdu_msg->Data[1] = (u_int8_t) attriblistlen; + attriblistlen = mrpdu_msg_ptr - (uint8_t *)MRPD_GET_MRPDU_MESSAGE_VECTOR(mrpdu_msg, 2); + MRPD_SET_MRPDU_MESSAGE_DATA(mrpdu_msg, 0, (uint8_t)(attriblistlen >> 8)); + MRPD_SET_MRPDU_MESSAGE_DATA(mrpdu_msg, 1, (uint8_t)attriblistlen); free(listen_declare); return 0; @@ -2031,7 +2026,7 @@ int msrp_txpdu(void) mrpdu = (mrpdu_t *) msgbuf_wrptr; mrpdu->ProtocolVersion = MSRP_PROT_VER; - mrpdu_msg_ptr = (unsigned char *)mrpdu->MessageList; + mrpdu_msg_ptr = MRPD_GET_MRPDU_MESSAGE_LIST(mrpdu); mrpdu_msg_eof = (unsigned char *)msgbuf + MAX_FRAME_SIZE; if (MSRP_db->mrp_db.lva.tx) { @@ -2054,7 +2049,7 @@ int msrp_txpdu(void) mrpdu_msg_ptr += bytes; - if (mrpdu_msg_ptr == (unsigned char *)mrpdu->MessageList) { + if (mrpdu_msg_ptr == MRPD_GET_MRPDU_MESSAGE_LIST(mrpdu)) { goto out; /* nothing to send */ } diff --git a/daemons/mrpd/mvrp.c b/daemons/mrpd/mvrp.c index 5ca0f04..2b9731e 100644 --- a/daemons/mrpd/mvrp.c +++ b/daemons/mrpd/mvrp.c @@ -32,12 +32,11 @@ /* * MVRP protocol (part of 802.1Q-2011) */ -#include + #include #include #include #include -#include #include "mrpd.h" #include "mrp.h" @@ -368,12 +367,12 @@ int mvrp_recv_msg(void) if (MVRP_PROT_VER != mrpdu->ProtocolVersion) /* XXX should accept ... */ goto out; - mrpdu_msg_ptr = (unsigned char *)mrpdu->MessageList; + mrpdu_msg_ptr = (unsigned char *)MRPD_GET_MRPDU_MESSAGE_LIST(mrpdu); mrpdu_msg_eof = (unsigned char *)mrpdu_msg_ptr; mrpdu_msg_eof += bytes; mrpdu_msg_eof -= sizeof(eth_hdr_t); - mrpdu_msg_eof -= offsetof(mrpdu_t, MessageList); + mrpdu_msg_eof -= MRPD_OFFSETOF_MRPD_GET_MRPDU_MESSAGE_LIST; /* * MVRP_VID_TYPE FirstValue is the 12 bit (2-byte) VLAN with @@ -411,9 +410,8 @@ int mvrp_recv_msg(void) /* AttributeListLength not used for MVRP, hence * Data points to the beginning of the VectorAttributes */ - mrpdu_vectorptr = - (mrpdu_vectorattrib_t *) mrpdu_msg->Data; - mrpdu_msg_ptr = (u_int8_t *) mrpdu_vectorptr; + mrpdu_vectorptr = MRPD_GET_MRPDU_MESSAGE_VECTOR(mrpdu_msg, 0); + mrpdu_msg_ptr = (uint8_t *) mrpdu_vectorptr; while (! ((mrpdu_msg_ptr[0] == 0) @@ -573,7 +571,7 @@ mvrp_emit_vidvectors(unsigned char *msgbuf, unsigned char *msgbuf_eof, attrib = MVRP_db->attrib_list; - mrpdu_vectorptr = (mrpdu_vectorattrib_t *) mrpdu_msg->Data; + mrpdu_vectorptr = MRPD_GET_MRPDU_MESSAGE_VECTOR(mrpdu_msg, 0); while ((mrpdu_msg_ptr < (mrpdu_msg_eof - 2)) && (NULL != attrib)) { @@ -747,7 +745,7 @@ mvrp_emit_vidvectors(unsigned char *msgbuf, unsigned char *msgbuf_eof, mrpdu_vectorptr = (mrpdu_vectorattrib_t *) mrpdu_msg_ptr; } - if (mrpdu_vectorptr == (mrpdu_vectorattrib_t *) mrpdu_msg->Data) { + if (mrpdu_vectorptr == MRPD_GET_MRPDU_MESSAGE_VECTOR(mrpdu_msg, 0)) { *bytes_used = 0; return 0; } @@ -812,7 +810,7 @@ int mvrp_txpdu(void) */ mrpdu->ProtocolVersion = MVRP_PROT_VER; - mrpdu_msg_ptr = (unsigned char *)mrpdu->MessageList; + mrpdu_msg_ptr = MRPD_GET_MRPDU_MESSAGE_LIST(mrpdu); mrpdu_msg_eof = (unsigned char *)msgbuf + MAX_FRAME_SIZE; /* @@ -851,7 +849,7 @@ int mvrp_txpdu(void) mrpdu_msg_ptr += bytes; - if (mrpdu_msg_ptr == (unsigned char *)mrpdu->MessageList) { + if (mrpdu_msg_ptr == MRPD_GET_MRPDU_MESSAGE_LIST(mrpdu)) { goto out; /* nothing to send */ }