Corrected FDT Ack.
This commit is contained in:
@@ -0,0 +1,4 @@
|
|||||||
|
set print pretty on
|
||||||
|
set print union on
|
||||||
|
set print address on
|
||||||
|
list
|
||||||
+10
-16
@@ -131,8 +131,9 @@ static int bvlc_encode_bip_address(
|
|||||||
int len = 0;
|
int len = 0;
|
||||||
|
|
||||||
if (pdu) {
|
if (pdu) {
|
||||||
len = encode_unsigned32(&pdu[0], address->s_addr);
|
encode_unsigned32(&pdu[0], address->s_addr);
|
||||||
len += encode_unsigned16(&pdu[len], port);
|
encode_unsigned16(&pdu[len], port);
|
||||||
|
len = 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
return len;
|
return len;
|
||||||
@@ -383,6 +384,7 @@ static int bvlc_encode_read_fdt_ack(
|
|||||||
int len = 0;
|
int len = 0;
|
||||||
unsigned count = 0;
|
unsigned count = 0;
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
uint16_t seconds_remaining = 0;
|
||||||
|
|
||||||
for (i = 0; i < MAX_FD_ENTRIES; i++) {
|
for (i = 0; i < MAX_FD_ENTRIES; i++) {
|
||||||
if (FD_Table[i].valid) {
|
if (FD_Table[i].valid) {
|
||||||
@@ -402,10 +404,10 @@ static int bvlc_encode_read_fdt_ack(
|
|||||||
bvlc_encode_bip_address(&pdu[pdu_len],
|
bvlc_encode_bip_address(&pdu[pdu_len],
|
||||||
&FD_Table[i].dest_address, FD_Table[i].dest_port);
|
&FD_Table[i].dest_address, FD_Table[i].dest_port);
|
||||||
pdu_len += len;
|
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;
|
pdu_len += len;
|
||||||
encode_unsigned16(&pdu[pdu_len],
|
seconds_remaining = FD_Table[i].seconds_remaining;
|
||||||
(uint16_t) FD_Table[i].seconds_remaining);
|
len = encode_unsigned16(&pdu[pdu_len], seconds_remaining);
|
||||||
pdu_len += len;
|
pdu_len += len;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -538,22 +540,14 @@ static bool bvlc_create_bdt(
|
|||||||
uint16_t npdu_length)
|
uint16_t npdu_length)
|
||||||
{
|
{
|
||||||
bool status = false;
|
bool status = false;
|
||||||
struct in_addr dest_address;
|
|
||||||
uint16_t dest_port;
|
|
||||||
unsigned i = 0;
|
unsigned i = 0;
|
||||||
uint32_t raw_address = 0;
|
|
||||||
|
|
||||||
for (i = 0; i < MAX_BBMD_ENTRIES; i++) {
|
for (i = 0; i < MAX_BBMD_ENTRIES; i++) {
|
||||||
if (npdu_length >= 10) {
|
if (npdu_length >= 10) {
|
||||||
BBMD_Table[i].valid = true;
|
BBMD_Table[i].valid = true;
|
||||||
decode_unsigned32(&npdu[0], &raw_address);
|
BBMD_Table[i].dest_address.s_addr = ntohl(&npdu[0]);
|
||||||
dest_address.s_addr = raw_address;
|
BBMD_Table[i].dest_port = ntohs(&npdu[4]);
|
||||||
BBMD_Table[i].dest_address.s_addr = ntohl(dest_address.s_addr);
|
BBMD_Table[i].broadcast_mask.s_addr = ntohl(&npdu[6]);
|
||||||
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);
|
|
||||||
npdu_length -= 10;
|
npdu_length -= 10;
|
||||||
} else {
|
} else {
|
||||||
BBMD_Table[i].valid = false;
|
BBMD_Table[i].valid = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user