summaryrefslogtreecommitdiff
path: root/print-rpki-rtr.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2011-08-14 15:42:31 -0700
committerGuy Harris <guy@alum.mit.edu>2011-08-14 15:42:31 -0700
commitc573fa52b8bc87517f685ccf2692600498966531 (patch)
tree7024b6460a1c01ea2b95b21a282ec2bb986f6a29 /print-rpki-rtr.c
parent2c3f157c8556434efbd91dc5efb7c597878ddd7f (diff)
downloadtcpdump-c573fa52b8bc87517f685ccf2692600498966531.tar.gz
Get rid of GCCisms.
Not all C compilers support anonymous unions in structures, zero-length array members of structures, or __attribute__.
Diffstat (limited to 'print-rpki-rtr.c')
-rw-r--r--print-rpki-rtr.c21
1 files changed, 11 insertions, 10 deletions
diff --git a/print-rpki-rtr.c b/print-rpki-rtr.c
index 6b0ac529..58890ee8 100644
--- a/print-rpki-rtr.c
+++ b/print-rpki-rtr.c
@@ -48,10 +48,9 @@ typedef struct rpki_rtr_pdu_ {
union {
u_char cache_nonce[2]; /* Cache Nonce */
u_char error_code[2]; /* Error code */
- };
+ } u;
u_char length[4];
- u_char msg[0]; /* message body */
-} __attribute__((packed)) rpki_rtr_pdu;
+} rpki_rtr_pdu;
#define RPKI_RTR_PDU_OVERHEAD (offsetof(rpki_rtr_pdu, rpki_rtr_pdu_msg))
/*
@@ -65,7 +64,7 @@ typedef struct rpki_rtr_pdu_ipv4_prefix_ {
u_char zero;
u_char prefix[4];
u_char as[4];
-} __attribute__((packed)) rpki_rtr_pdu_ipv4_prefix;
+} rpki_rtr_pdu_ipv4_prefix;
/*
* IPv6 Prefix PDU.
@@ -78,7 +77,7 @@ typedef struct rpki_rtr_pdu_ipv6_prefix_ {
u_char zero;
u_char prefix[16];
u_char as[4];
-} __attribute__((packed)) rpki_rtr_pdu_ipv6_prefix;
+} rpki_rtr_pdu_ipv6_prefix;
/*
* Error report PDU.
@@ -87,7 +86,7 @@ typedef struct rpki_rtr_pdu_error_report_ {
rpki_rtr_pdu pdu_header;
u_char encapsulated_pdu_length[4]; /* Encapsulated PDU length */
u_char variable[0];
-} __attribute__((packed)) rpki_rtr_pdu_error_report;
+} rpki_rtr_pdu_error_report;
/*
* PDU type codes
@@ -181,6 +180,7 @@ rpki_rtr_pdu_print (const u_char *tptr, u_int indent)
{
const rpki_rtr_pdu *pdu_header;
u_int pdu_type, pdu_len, hexdump;
+ const u_char *msg;
pdu_header = (rpki_rtr_pdu *)tptr;
pdu_type = pdu_header->pdu_type;
@@ -201,10 +201,11 @@ rpki_rtr_pdu_print (const u_char *tptr, u_int indent)
case RPKI_RTR_SERIAL_NOTIFY_PDU:
case RPKI_RTR_SERIAL_QUERY_PDU:
case RPKI_RTR_END_OF_DATA_PDU:
+ msg = (const u_char *)(pdu_header + 1);
printf("%sCache-Nonce: 0x%04x, Serial: %u",
indent_string(indent+2),
- EXTRACT_16BITS(pdu_header->cache_nonce),
- EXTRACT_32BITS(pdu_header->msg));
+ EXTRACT_16BITS(pdu_header->u.cache_nonce),
+ EXTRACT_32BITS(msg));
break;
/*
@@ -221,7 +222,7 @@ rpki_rtr_pdu_print (const u_char *tptr, u_int indent)
case RPKI_RTR_CACHE_RESPONSE_PDU:
printf("%sCache-Nonce: 0x%04x",
indent_string(indent+2),
- EXTRACT_16BITS(pdu_header->cache_nonce));
+ EXTRACT_16BITS(pdu_header->u.cache_nonce));
break;
case RPKI_RTR_IPV4_PREFIX_PDU:
@@ -262,7 +263,7 @@ rpki_rtr_pdu_print (const u_char *tptr, u_int indent)
encapsulated_pdu_length = EXTRACT_32BITS(pdu->encapsulated_pdu_length);
tlen = pdu_len;
- error_code = EXTRACT_16BITS(pdu->pdu_header.error_code);
+ error_code = EXTRACT_16BITS(pdu->pdu_header.u.error_code);
printf("%sError code: %s (%u), Encapsulated PDU length: %u",
indent_string(indent+2),
tok2str(rpki_rtr_error_codes, "Unknown", error_code),