+// SPDX-License-Identifier: ISC
/* $OpenBSD$ */
/*
* Copyright (c) 2009 Michele Marchetto <michele@openbsd.org>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include <zebra.h>
fatalx("send_address: unknown af");
}
- while ((if_addr = LIST_FIRST(addr_list)) != NULL) {
+ while (LIST_FIRST(addr_list) != NULL) {
/*
* Send as many addresses as possible - respect the session's
* negotiated maximum pdu length.
if ((buf = ibuf_open(size)) == NULL)
fatal(__func__);
- err |= gen_ldp_hdr(buf, size);
+ SET_FLAG(err, gen_ldp_hdr(buf, size));
size -= LDP_HDR_SIZE;
- err |= gen_msg_hdr(buf, msg_type, size);
+ SET_FLAG(err, gen_msg_hdr(buf, msg_type, size));
size -= LDP_MSG_SIZE;
- err |= gen_address_list_tlv(buf, af, addr_list, tlv_addr_count);
+ SET_FLAG(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;
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);
+
+ SET_FLAG(err, gen_msg_hdr(buf, MSG_TYPE_ADDRWITHDRAW, size));
+ SET_FLAG(err, gen_address_list_tlv(buf, AF_INET, NULL, 0));
+ SET_FLAG(err, gen_fec_tlv(buf, fec));
+ SET_FLAG(err, gen_mac_list_tlv(buf, mac));
+
if (err) {
ibuf_free(buf);
return;
}
alt.length = htons(sizeof(alt.family) + addr_size * tlv_addr_count);
- err |= ibuf_add(buf, &alt, sizeof(alt));
+ SET_FLAG(err, ibuf_add(buf, &alt, sizeof(alt)));
+
if (addr_list == NULL)
return (err);
LIST_FOREACH(if_addr, addr_list, entry) {
- err |= ibuf_add(buf, &if_addr->addr, addr_size);
+ SET_FLAG(err, ibuf_add(buf, &if_addr->addr, addr_size));
+
if (--tlv_addr_count == 0)
break;
}
tlv.length = htons(ETH_ALEN);
err = ibuf_add(buf, &tlv, sizeof(tlv));
if (mac)
- err |= ibuf_add(buf, mac, ETH_ALEN);
+ SET_FLAG(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);
}
}
log_msg_address(int out, uint16_t msg_type, struct nbr *nbr, int af,
union ldpd_addr *addr)
{
- debug_msg(out, "%s: lsr-id %s, address %s", msg_name(msg_type),
- inet_ntoa(nbr->id), log_addr(af, addr));
+ debug_msg(out, "%s: lsr-id %pI4, address %s", msg_name(msg_type),
+ &nbr->id, log_addr(af, addr));
}
static void
{
char buf[ETHER_ADDR_STRLEN];
- debug_msg(out, "mac withdrawal: lsr-id %s, mac %s", inet_ntoa(nbr->id),
+ debug_msg(out, "mac withdrawal: lsr-id %pI4, mac %s", &nbr->id,
(mac) ? prefix_mac2str((struct ethaddr *)mac, buf, sizeof(buf)) :
"wildcard");
}