err |= gen_msg_hdr(buf, msg_type, size);
size -= LDP_MSG_SIZE;
err |= gen_address_list_tlv(buf, af, addr_list, tlv_addr_count);
+ (void)size;
if (err) {
address_list_clr(addr_list);
ibuf_free(buf);
log_msg_address(1, msg_type, nbr, af, &if_addr->addr);
LIST_REMOVE(if_addr, entry);
+ assert(if_addr != LIST_FIRST(addr_list));
free(if_addr);
if (--tlv_addr_count == 0)
break;
}
evbuf_enqueue(&nbr->tcp->wbuf, buf);
+
+ /* no errors - update per neighbor message counters */
+ switch (msg_type) {
+ case MSG_TYPE_ADDR:
+ nbr->stats.addr_sent++;
+ break;
+ case MSG_TYPE_ADDRWITHDRAW:
+ nbr->stats.addrwdraw_sent++;
+ break;
+ default:
+ break;
+ }
}
nbr_fsm(nbr, NBR_EVT_PDU_SENT);
size = LDP_HDR_SIZE + LDP_MSG_SIZE + ADDR_LIST_SIZE + len_fec_tlv(fec) +
TLV_HDR_SIZE;
if (mac)
- size += ETHER_ADDR_LEN;
+ size += ETH_ALEN;
if ((buf = ibuf_open(size)) == NULL)
fatal(__func__);
err = gen_ldp_hdr(buf, size);
size -= LDP_HDR_SIZE;
err |= gen_msg_hdr(buf, MSG_TYPE_ADDRWITHDRAW, size);
- size -= LDP_MSG_SIZE;
err |= gen_address_list_tlv(buf, AF_INET, NULL, 0);
err |= gen_fec_tlv(buf, fec);
err |= gen_mac_list_tlv(buf, mac);
memset(&tlv, 0, sizeof(tlv));
tlv.type = htons(TLV_TYPE_MAC_LIST);
if (mac)
- tlv.length = htons(ETHER_ADDR_LEN);
+ tlv.length = htons(ETH_ALEN);
err = ibuf_add(buf, &tlv, sizeof(tlv));
if (mac)
- err |= ibuf_add(buf, mac, ETHER_ADDR_LEN);
+ err |= ibuf_add(buf, mac, ETH_ALEN);
return (err);
}
while ((if_addr = LIST_FIRST(addr_list)) != NULL) {
LIST_REMOVE(if_addr, entry);
+ assert(if_addr != LIST_FIRST(addr_list));
free(if_addr);
}
}