Corrected FDT Ack.

This commit is contained in:
skarg
2009-09-28 22:34:11 +00:00
parent 667782bddb
commit b9367b7bde
2 changed files with 14 additions and 16 deletions
+4
View File
@@ -0,0 +1,4 @@
set print pretty on
set print union on
set print address on
list
+10 -16
View File
@@ -131,8 +131,9 @@ static int bvlc_encode_bip_address(
int len = 0;
if (pdu) {
len = encode_unsigned32(&pdu[0], address->s_addr);
len += encode_unsigned16(&pdu[len], port);
encode_unsigned32(&pdu[0], address->s_addr);
encode_unsigned16(&pdu[len], port);
len = 6;
}
return len;
@@ -383,6 +384,7 @@ static int bvlc_encode_read_fdt_ack(
int len = 0;
unsigned count = 0;
unsigned i;
uint16_t seconds_remaining = 0;
for (i = 0; i < MAX_FD_ENTRIES; i++) {
if (FD_Table[i].valid) {
@@ -402,10 +404,10 @@ static int bvlc_encode_read_fdt_ack(
bvlc_encode_bip_address(&pdu[pdu_len],
&FD_Table[i].dest_address, FD_Table[i].dest_port);
pdu_len += len;
encode_unsigned16(&pdu[pdu_len], FD_Table[i].time_to_live);
len = encode_unsigned16(&pdu[pdu_len], FD_Table[i].time_to_live);
pdu_len += len;
encode_unsigned16(&pdu[pdu_len],
(uint16_t) FD_Table[i].seconds_remaining);
seconds_remaining = FD_Table[i].seconds_remaining;
len = encode_unsigned16(&pdu[pdu_len], seconds_remaining);
pdu_len += len;
}
}
@@ -538,22 +540,14 @@ static bool bvlc_create_bdt(
uint16_t npdu_length)
{
bool status = false;
struct in_addr dest_address;
uint16_t dest_port;
unsigned i = 0;
uint32_t raw_address = 0;
for (i = 0; i < MAX_BBMD_ENTRIES; i++) {
if (npdu_length >= 10) {
BBMD_Table[i].valid = true;
decode_unsigned32(&npdu[0], &raw_address);
dest_address.s_addr = raw_address;
BBMD_Table[i].dest_address.s_addr = ntohl(dest_address.s_addr);
decode_unsigned16(&npdu[4], &dest_port);
BBMD_Table[i].dest_port = ntohs(dest_port);
decode_unsigned32(&npdu[6], &raw_address);
dest_address.s_addr = raw_address;
BBMD_Table[i].broadcast_mask.s_addr = ntohl(dest_address.s_addr);
BBMD_Table[i].dest_address.s_addr = ntohl(&npdu[0]);
BBMD_Table[i].dest_port = ntohs(&npdu[4]);
BBMD_Table[i].broadcast_mask.s_addr = ntohl(&npdu[6]);
npdu_length -= 10;
} else {
BBMD_Table[i].valid = false;