From: Quentin Young Date: Thu, 7 Mar 2019 18:46:02 +0000 (+0000) Subject: vrrpd: clean up logging X-Git-Tag: base_7.2~330^2~37 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=613b45b008bd473704b341ce4d8247ddceeba494;p=mirror%2Ffrr.git vrrpd: clean up logging * Always include address family when available * Log advertisement decodes on one line Signed-off-by: Quentin Young --- diff --git a/vrrpd/vrrp.c b/vrrpd/vrrp.c index cdc9e38665..cba078a6c1 100644 --- a/vrrpd/vrrp.c +++ b/vrrpd/vrrp.c @@ -295,9 +295,9 @@ void vrrp_check_start(struct vrrp_vrouter *vr) if (start) vrrp_event(r, VRRP_EVENT_STARTUP); else if (whynot) - zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID - "Refusing to start IPv4 Virtual Router: %s", - vr->vrid, whynot); + zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Refusing to start Virtual Router: %s", + vr->vrid, family2str(r->family), whynot); r = vr->v6; /* Must not already be started */ @@ -327,9 +327,9 @@ void vrrp_check_start(struct vrrp_vrouter *vr) if (start) vrrp_event(r, VRRP_EVENT_STARTUP); else if (whynot) - zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID - "Refusing to start IPv6 Virtual Router: %s", - vr->vrid, whynot); + zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Refusing to start Virtual Router: %s", + vr->vrid, family2str(r->family), whynot); } void vrrp_set_priority(struct vrrp_vrouter *vr, uint8_t priority) @@ -376,9 +376,9 @@ int vrrp_add_ip(struct vrrp_router *r, struct ipaddr *ip) char ipbuf[INET6_ADDRSTRLEN]; inet_ntop(r->family, &ip->ip, ipbuf, sizeof(ipbuf)); zlog_err( - VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "This VRRP router is not the address owner of %s, but is the address owner of other addresses; this config is unsupported.", - r->vr->vrid, ipbuf); + r->vr->vrid, family2str(r->family), ipbuf); return -1; } @@ -511,15 +511,16 @@ static bool vrrp_attach_interface(struct vrrp_router *r) assert(!!selection == !!candidates); if (candidates == 0) - zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID - "%s interface: None (no interface found w/ MAC %s)", + zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Interface: None (no interface found w/ MAC %s)", r->vr->vrid, family2str(r->family), ethstr); else if (candidates > 1) - zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID - "%s interface: Multiple interfaces found; using %s", + zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Interface: Multiple interfaces found; using %s", r->vr->vrid, family2str(r->family), selection->name); else - zlog_info(VRRP_LOGPFX VRRP_LOGPFX_VRID "%s interface: %s", + zlog_info(VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Interface: %s", r->vr->vrid, family2str(r->family), selection->name); r->mvl_ifp = selection; @@ -652,9 +653,10 @@ static void vrrp_send_advertisement(struct vrrp_router *r) XFREE(MTYPE_VRRP_PKT, pkt); if (sent < 0) { - zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID + zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Failed to send VRRP Advertisement: %s", - r->vr->vrid, safe_strerror(errno)); + r->vr->vrid, family2str(r->family), + safe_strerror(errno)); } else { ++r->stats.adver_tx_cnt; } @@ -698,15 +700,15 @@ static int vrrp_recv_advertisement(struct vrrp_router *r, struct ipaddr *src, char dumpbuf[BUFSIZ]; vrrp_pkt_adver_dump(dumpbuf, sizeof(dumpbuf), pkt); DEBUGD(&vrrp_dbg_proto, - VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Received VRRP Advertisement from %s:\n%s", - r->vr->vrid, sipstr, dumpbuf); + r->vr->vrid, family2str(r->family), sipstr, dumpbuf); /* Check that VRID matches our configured VRID */ if (pkt->hdr.vrid != r->vr->vrid) { DEBUGD(&vrrp_dbg_proto, - VRRP_LOGPFX VRRP_LOGPFX_VRID - "%s datagram invalid: Advertisement contains VRID %" PRIu8 + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Datagram invalid: Advertisement contains VRID %" PRIu8 " which does not match our instance", r->vr->vrid, family2str(r->family), pkt->hdr.vrid); return -1; @@ -715,8 +717,8 @@ static int vrrp_recv_advertisement(struct vrrp_router *r, struct ipaddr *src, /* Verify that we are not the IPvX address owner */ if (r->is_owner) { DEBUGD(&vrrp_dbg_proto, - VRRP_LOGPFX VRRP_LOGPFX_VRID - "%s datagram invalid: Received advertisement but we are the address owner", + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Datagram invalid: Received advertisement but we are the address owner", r->vr->vrid, family2str(r->family)); return -1; } @@ -726,8 +728,8 @@ static int vrrp_recv_advertisement(struct vrrp_router *r, struct ipaddr *src, == MAX(r->vr->advertisement_interval / 100, 1)); if (r->vr->version == 2 && !adveq) { DEBUGD(&vrrp_dbg_proto, - VRRP_LOGPFX VRRP_LOGPFX_VRID - "%s datagram invalid: Received advertisement with advertisement interval %" PRIu8 + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Datagram invalid: Received advertisement with advertisement interval %" PRIu8 " unequal to our configured value %u", r->vr->vrid, family2str(r->family), pkt->hdr.v2.adver_int, @@ -739,8 +741,8 @@ static int vrrp_recv_advertisement(struct vrrp_router *r, struct ipaddr *src, /* Check that # IPs received matches our # configured IPs */ if (pkt->hdr.naddr != r->addrs->count) DEBUGD(&vrrp_dbg_proto, - VRRP_LOGPFX VRRP_LOGPFX_VRID - "%s datagram has %" PRIu8 + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Datagram has %" PRIu8 " addresses, but this VRRP instance has %u", r->vr->vrid, family2str(r->family), pkt->hdr.naddr, r->addrs->count); @@ -764,10 +766,11 @@ static int vrrp_recv_advertisement(struct vrrp_router *r, struct ipaddr *src, || ((pkt->hdr.priority == r->priority) && addrcmp > 0)) { zlog_info( - VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Received advertisement from %s w/ priority %" PRIu8 "; switching to Backup", - r->vr->vrid, sipstr, pkt->hdr.priority); + r->vr->vrid, family2str(r->family), sipstr, + pkt->hdr.priority); THREAD_OFF(r->t_adver_timer); if (r->vr->version == 3) { r->master_adver_interval = @@ -783,11 +786,11 @@ static int vrrp_recv_advertisement(struct vrrp_router *r, struct ipaddr *src, } else { /* Discard advertisement */ DEBUGD(&vrrp_dbg_proto, - VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Discarding advertisement from %s (%" PRIu8 " <= %" PRIu8 " & %s <= %s)", - r->vr->vrid, sipstr, pkt->hdr.priority, - r->priority, sipstr, dipstr); + r->vr->vrid, family2str(r->family), sipstr, + pkt->hdr.priority, r->priority, sipstr, dipstr); } break; case VRRP_STATE_BACKUP: @@ -812,17 +815,18 @@ static int vrrp_recv_advertisement(struct vrrp_router *r, struct ipaddr *src, && pkt->hdr.priority < r->priority) { /* Discard advertisement */ DEBUGD(&vrrp_dbg_proto, - VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Discarding advertisement from %s (%" PRIu8 " < %" PRIu8 " & preempt = true)", - r->vr->vrid, sipstr, pkt->hdr.priority, - r->priority); + r->vr->vrid, family2str(r->family), sipstr, + pkt->hdr.priority, r->priority); } break; case VRRP_STATE_INITIALIZE: - zlog_err(VRRP_LOGPFX VRRP_LOGPFX_VRID + zlog_err(VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Received ADVERTISEMENT in state %s; this is a bug", - r->vr->vrid, vrrp_state_names[r->fsm.state]); + r->vr->vrid, family2str(r->family), + vrrp_state_names[r->fsm.state]); break; } @@ -869,7 +873,8 @@ static int vrrp_read(struct thread *thread) if (DEBUG_MODE_CHECK(&vrrp_dbg_pkt, DEBUG_MODE_ALL)) { DEBUGD(&vrrp_dbg_pkt, - VRRP_LOGPFX VRRP_LOGPFX_VRID "Received %s datagram: ", + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Datagram rx: ", r->vr->vrid, family2str(r->family)); zlog_hexdump(r->ibuf, nbytes); } @@ -877,16 +882,13 @@ static int vrrp_read(struct thread *thread) pktsize = vrrp_pkt_parse_datagram(r->family, r->vr->version, &m, nbytes, &src, &pkt, errbuf, sizeof(errbuf)); - if (pktsize < 0) { + if (pktsize < 0) DEBUGD(&vrrp_dbg_pkt, - VRRP_LOGPFX VRRP_LOGPFX_VRID "%s datagram invalid: %s", + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Datagram invalid: %s", r->vr->vrid, family2str(r->family), errbuf); - } else { - DEBUGD(&vrrp_dbg_pkt, - VRRP_LOGPFX VRRP_LOGPFX_VRID "Packet looks good", - r->vr->vrid); + else vrrp_recv_advertisement(r, &src, pkt, pktsize); - } resched = true; @@ -936,8 +938,8 @@ static int vrrp_bind_to_primary_connected(struct vrrp_router *r) } if (c == NULL) { - zlog_err(VRRP_LOGPFX VRRP_LOGPFX_VRID - "Failed to find %s address to bind on %s", + zlog_err(VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Failed to find address to bind on %s", r->vr->vrid, family2str(r->family), ifp->name); return -1; } @@ -964,9 +966,9 @@ static int vrrp_bind_to_primary_connected(struct vrrp_router *r) sockopt_reuseaddr(r->sock_tx); if (bind(r->sock_tx, (const struct sockaddr *)&su, sizeof(su)) < 0) { zlog_err( - VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Failed to bind Tx socket to primary IP address %s: %s", - r->vr->vrid, + r->vr->vrid, family2str(r->family), inet_ntop(r->family, (const void *)&c->address->u.prefix, ipstr, sizeof(ipstr)), @@ -974,9 +976,9 @@ static int vrrp_bind_to_primary_connected(struct vrrp_router *r) return -1; } else { DEBUGD(&vrrp_dbg_sock, - VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Bound Tx socket to primary IP address %s", - r->vr->vrid, + r->vr->vrid, family2str(r->family), inet_ntop(r->family, (const void *)&c->address->u.prefix, ipstr, sizeof(ipstr))); } @@ -1022,8 +1024,8 @@ static int vrrp_socket(struct vrrp_router *r) if (r->sock_rx < 0 || r->sock_tx < 0) { const char *rxtx = r->sock_rx < 0 ? "Rx" : "Tx"; - zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID - "Can't create %s VRRP %s socket", + zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Can't create VRRP %s socket", r->vr->vrid, family2str(r->family), rxtx); failed = true; goto done; @@ -1037,9 +1039,9 @@ static int vrrp_socket(struct vrrp_router *r) sizeof(ttl)); if (ret < 0) { zlog_warn( - VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Failed to set outgoing multicast TTL count to 255; RFC 5798 compliant implementations will drop our packets", - r->vr->vrid); + r->vr->vrid, family2str(r->family)); } /* Set Tx socket DSCP byte */ @@ -1057,16 +1059,17 @@ static int vrrp_socket(struct vrrp_router *r) } vrrp_privs.change(ZPRIVS_LOWER); if (ret) { - zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID + zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Failed to bind Rx socket to %s: %s", - r->vr->vrid, r->vr->ifp->name, - safe_strerror(errno)); + r->vr->vrid, family2str(r->family), + r->vr->ifp->name, safe_strerror(errno)); failed = true; goto done; } DEBUGD(&vrrp_dbg_sock, - VRRP_LOGPFX VRRP_LOGPFX_VRID "Bound Rx socket to %s", - r->vr->vrid, r->vr->ifp->name); + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Bound Rx socket to %s", + r->vr->vrid, family2str(r->family), r->vr->ifp->name); /* Bind Rx socket to v4 multicast address */ struct sockaddr_in sa = {0}; @@ -1074,16 +1077,16 @@ static int vrrp_socket(struct vrrp_router *r) sa.sin_addr.s_addr = htonl(VRRP_MCASTV4_GROUP); if (bind(r->sock_rx, (struct sockaddr *)&sa, sizeof(sa))) { zlog_err( - VRRP_LOGPFX VRRP_LOGPFX_VRID - "Failed to bind Rx socket to VRRP %s multicast group: %s", + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Failed to bind Rx socket to VRRP multicast group: %s", r->vr->vrid, family2str(r->family), safe_strerror(errno)); failed = true; goto done; } DEBUGD(&vrrp_dbg_sock, - VRRP_LOGPFX VRRP_LOGPFX_VRID - "Bound Rx socket to VRRP %s multicast group", + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Bound Rx socket to VRRP multicast group", r->vr->vrid, family2str(r->family)); /* Join Rx socket to VRRP IPv4 multicast group */ @@ -1100,8 +1103,8 @@ static int vrrp_socket(struct vrrp_router *r) goto done; } DEBUGD(&vrrp_dbg_sock, - VRRP_LOGPFX VRRP_LOGPFX_VRID - "Joined %s VRRP multicast group", + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Joined VRRP multicast group", r->vr->vrid, family2str(r->family)); /* Set outgoing interface for advertisements */ @@ -1111,24 +1114,25 @@ static int vrrp_socket(struct vrrp_router *r) (void *)&mreqn, sizeof(mreqn)); if (ret < 0) { zlog_warn( - VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Could not set %s as outgoing multicast interface", - r->vr->vrid, r->mvl_ifp->name); + r->vr->vrid, family2str(r->family), + r->mvl_ifp->name); failed = true; goto done; } DEBUGD(&vrrp_dbg_sock, - VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Set %s as outgoing multicast interface", - r->vr->vrid, r->mvl_ifp->name); + r->vr->vrid, family2str(r->family), r->mvl_ifp->name); } else if (r->family == AF_INET6) { /* Always transmit IPv6 packets with hop limit set to 255 */ ret = setsockopt_ipv6_multicast_hops(r->sock_tx, 255); if (ret < 0) { zlog_warn( - VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Failed to set outgoing multicast hop count to 255; RFC 5798 compliant implementations will drop our packets", - r->vr->vrid); + r->vr->vrid, family2str(r->family)); } /* Set Tx socket DSCP byte */ @@ -1137,9 +1141,9 @@ static int vrrp_socket(struct vrrp_router *r) /* Request hop limit delivery */ setsockopt_ipv6_hoplimit(r->sock_rx, 1); if (ret < 0) { - zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID + zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Failed to request IPv6 Hop Limit delivery", - r->vr->vrid); + r->vr->vrid, family2str(r->family)); failed = true; goto done; } @@ -1156,16 +1160,17 @@ static int vrrp_socket(struct vrrp_router *r) } vrrp_privs.change(ZPRIVS_LOWER); if (ret) { - zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID + zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Failed to bind Rx socket to %s: %s", - r->vr->vrid, r->vr->ifp->name, - safe_strerror(errno)); + r->vr->vrid, family2str(r->family), + r->vr->ifp->name, safe_strerror(errno)); failed = true; goto done; } DEBUGD(&vrrp_dbg_sock, - VRRP_LOGPFX VRRP_LOGPFX_VRID "Bound Rx socket to %s", - r->vr->vrid, r->vr->ifp->name); + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Bound Rx socket to %s", + r->vr->vrid, family2str(r->family), r->vr->ifp->name); /* Bind Rx socket to v6 multicast address */ struct sockaddr_in6 sa = {0}; @@ -1173,16 +1178,16 @@ static int vrrp_socket(struct vrrp_router *r) inet_pton(AF_INET6, VRRP_MCASTV6_GROUP_STR, &sa.sin6_addr); if (bind(r->sock_rx, (struct sockaddr *)&sa, sizeof(sa))) { zlog_err( - VRRP_LOGPFX VRRP_LOGPFX_VRID - "Failed to bind Rx socket to VRRP %s multicast group: %s", + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Failed to bind Rx socket to VRRP multicast group: %s", r->vr->vrid, family2str(r->family), safe_strerror(errno)); failed = true; goto done; } DEBUGD(&vrrp_dbg_sock, - VRRP_LOGPFX VRRP_LOGPFX_VRID - "Bound Rx socket to VRRP %s multicast group", + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Bound Rx socket to VRRP multicast group", r->vr->vrid, family2str(r->family)); /* Join VRRP IPv6 multicast group */ @@ -1193,15 +1198,15 @@ static int vrrp_socket(struct vrrp_router *r) ret = setsockopt(r->sock_rx, IPPROTO_IPV6, IPV6_JOIN_GROUP, &mreq, sizeof(mreq)); if (ret < 0) { - zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID - "Failed to join VRRP %s multicast group", + zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Failed to join VRRP multicast group", r->vr->vrid, family2str(r->family)); failed = true; goto done; } DEBUGD(&vrrp_dbg_sock, - VRRP_LOGPFX VRRP_LOGPFX_VRID - "Joined %s VRRP multicast group", + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Joined VRRP multicast group", r->vr->vrid, family2str(r->family)); /* Set outgoing interface for advertisements */ @@ -1209,16 +1214,17 @@ static int vrrp_socket(struct vrrp_router *r) &r->mvl_ifp->ifindex, sizeof(ifindex_t)); if (ret < 0) { zlog_warn( - VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Could not set %s as outgoing multicast interface", - r->vr->vrid, r->mvl_ifp->name); + r->vr->vrid, family2str(r->family), + r->mvl_ifp->name); failed = true; goto done; } DEBUGD(&vrrp_dbg_sock, - VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Set %s as outgoing multicast interface", - r->vr->vrid, r->mvl_ifp->name); + r->vr->vrid, family2str(r->family), r->mvl_ifp->name); } /* Bind Tx socket to link-local address */ @@ -1230,8 +1236,8 @@ static int vrrp_socket(struct vrrp_router *r) done: ret = 0; if (failed) { - zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID - "Failed to initialize VRRP %s router", + zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Failed to initialize VRRP router", r->vr->vrid, family2str(r->family)); if (r->sock_rx >= 0) { close(r->sock_rx); @@ -1280,22 +1286,22 @@ static void vrrp_change_state_master(struct vrrp_router *r) vrrp_ndisc_una_send_all(r); } else { DEBUGD(&vrrp_dbg_proto, - VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Delaying VRRP advertisement until interface is up", - r->vr->vrid); + r->vr->vrid, family2str(r->family)); r->advert_pending = true; if (r->family == AF_INET) { DEBUGD(&vrrp_dbg_proto, - VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Delaying VRRP gratuitous ARPs until interface is up", - r->vr->vrid); + r->vr->vrid, family2str(r->family)); r->garp_pending = true; } else if (r->family == AF_INET6) { DEBUGD(&vrrp_dbg_proto, - VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Delaying VRRP unsolicited neighbor advertisement until interface is up", - r->vr->vrid); + r->vr->vrid, family2str(r->family)); r->ndisc_pending = true; } } @@ -1371,7 +1377,8 @@ static void vrrp_change_state(struct vrrp_router *r, int to) /* Call our handlers, then any subscribers */ vrrp_change_state_handlers[to](r); hook_call(vrrp_change_state_hook, r, to); - zlog_info(VRRP_LOGPFX VRRP_LOGPFX_VRID "%s -> %s", r->vr->vrid, + zlog_info(VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "%s -> %s", + r->vr->vrid, family2str(r->family), vrrp_state_names[r->fsm.state], vrrp_state_names[to]); r->fsm.state = to; @@ -1386,7 +1393,9 @@ static int vrrp_adver_timer_expire(struct thread *thread) struct vrrp_router *r = thread->arg; DEBUGD(&vrrp_dbg_proto, - VRRP_LOGPFX VRRP_LOGPFX_VRID "Adver_Timer expired", r->vr->vrid); + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Adver_Timer expired", + r->vr->vrid, family2str(r->family)); if (r->fsm.state == VRRP_STATE_MASTER) { /* Send an ADVERTISEMENT */ @@ -1397,9 +1406,10 @@ static int vrrp_adver_timer_expire(struct thread *thread) r->vr->advertisement_interval * 10, &r->t_adver_timer); } else { - zlog_err(VRRP_LOGPFX VRRP_LOGPFX_VRID + zlog_err(VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Adver_Timer expired in state '%s'; this is a bug", - r->vr->vrid, vrrp_state_names[r->fsm.state]); + r->vr->vrid, family2str(r->family), + vrrp_state_names[r->fsm.state]); } return 0; @@ -1412,8 +1422,9 @@ static int vrrp_master_down_timer_expire(struct thread *thread) { struct vrrp_router *r = thread->arg; - zlog_info(VRRP_LOGPFX VRRP_LOGPFX_VRID "Master_Down_Timer expired", - r->vr->vrid); + zlog_info(VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Master_Down_Timer expired", + r->vr->vrid, family2str(r->family)); thread_add_timer_msec(master, vrrp_adver_timer_expire, r, r->vr->advertisement_interval * 10, @@ -1448,8 +1459,8 @@ static int vrrp_startup(struct vrrp_router *r) /* Must have a valid macvlan interface available */ if (r->mvl_ifp == NULL && !vrrp_attach_interface(r)) { - zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID - "No appropriate interface for %s VRRP found", + zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "No appropriate interface found", r->vr->vrid, family2str(r->family)); return -1; } @@ -1482,9 +1493,10 @@ static int vrrp_startup(struct vrrp_router *r) vrrp_recalculate_timers(r); zlog_info( - VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "%s has priority set to 255 or owns primary Virtual Router IP %s; electing self as Master", - r->vr->vrid, r->vr->ifp->name, ipbuf); + r->vr->vrid, family2str(r->family), r->vr->ifp->name, + ipbuf); } if (r->priority == VRRP_PRIO_MASTER) { @@ -1528,9 +1540,10 @@ static int vrrp_shutdown(struct vrrp_router *r) break; case VRRP_STATE_INITIALIZE: DEBUGD(&vrrp_dbg_proto, - VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Received '%s' event in '%s' state; ignoring", - r->vr->vrid, vrrp_event_names[VRRP_EVENT_SHUTDOWN], + r->vr->vrid, family2str(r->family), + vrrp_event_names[VRRP_EVENT_SHUTDOWN], vrrp_state_names[VRRP_STATE_INITIALIZE]); break; } @@ -1577,8 +1590,8 @@ static int (*vrrp_event_handlers[])(struct vrrp_router *r) = { */ int vrrp_event(struct vrrp_router *r, int event) { - zlog_info(VRRP_LOGPFX VRRP_LOGPFX_VRID "'%s' event", r->vr->vrid, - vrrp_event_names[event]); + zlog_info(VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "'%s' event", + r->vr->vrid, family2str(r->family), vrrp_event_names[event]); return vrrp_event_handlers[event](r); } @@ -1603,8 +1616,8 @@ static void vrrp_autoconfig_autoaddrupdate(struct vrrp_router *r) return; DEBUGD(&vrrp_dbg_auto, - VRRP_LOGPFX VRRP_LOGPFX_VRID - "Setting %s Virtual IP list to match IPv4 addresses on %s", + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Setting Virtual IP list to match IPv4 addresses on %s", r->vr->vrid, family2str(r->family), r->mvl_ifp->name); for (ALL_LIST_ELEMENTS_RO(r->mvl_ifp->connected, ln, c)) { is_v6_ll = (c->address->family == AF_INET6 @@ -1613,8 +1626,9 @@ static void vrrp_autoconfig_autoaddrupdate(struct vrrp_router *r) inet_ntop(r->family, &c->address->u.prefix, ipbuf, sizeof(ipbuf)); DEBUGD(&vrrp_dbg_auto, - VRRP_LOGPFX VRRP_LOGPFX_VRID "Adding %s", - r->vr->vrid, ipbuf); + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Adding %s", + r->vr->vrid, family2str(r->family), ipbuf); if (r->family == AF_INET) vrrp_add_ipv4(r->vr, c->address->u.prefix4); else @@ -1626,8 +1640,8 @@ static void vrrp_autoconfig_autoaddrupdate(struct vrrp_router *r) if (r->addrs->count == 0 && r->fsm.state != VRRP_STATE_INITIALIZE) { DEBUGD(&vrrp_dbg_auto, - VRRP_LOGPFX VRRP_LOGPFX_VRID - "%s Virtual IP list is empty; shutting down", + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Virtual IP list is empty; shutting down", r->vr->vrid, family2str(r->family)); vrrp_event(r, VRRP_EVENT_SHUTDOWN); } @@ -1645,18 +1659,19 @@ vrrp_autoconfig_autocreate(struct interface *mvl_ifp) return NULL; uint8_t vrid = mvl_ifp->hw_addr[5]; + uint8_t fam = mvl_ifp->hw_addr[4]; DEBUGD(&vrrp_dbg_auto, - VRRP_LOGPFX VRRP_LOGPFX_VRID "Autoconfiguring VRRP on %s", vrid, - p->name); + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Autoconfiguring VRRP on %s", + vrid, family2str(fam), p->name); vr = vrrp_vrouter_create(p, vrid, vrrp_autoconfig_version); if (!vr) { - zlog_warn(VRRP_LOGPFX - "Failed to autoconfigure VRRP instance %" PRIu8 - " on %s", - vrid, p->name); + zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM + "Failed to autoconfigure VRRP on %s", + vrid, family2str(fam), p->name); return NULL; } @@ -1995,16 +2010,18 @@ void vrrp_if_up(struct interface *ifp) if (vr->v4->advert_pending) { DEBUGD(&vrrp_dbg_proto, VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX_FAM "Interface up; sending pending advertisement", - vr->vrid); + vr->vrid, family2str(vr->v4->family)); vrrp_send_advertisement(vr->v4); vr->v4->advert_pending = false; } if (vr->v4->garp_pending) { DEBUGD(&vrrp_dbg_proto, VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX_FAM "Interface up; sending pending gratuitous ARP", - vr->vrid); + vr->vrid, family2str(vr->v4->family)); vrrp_garp_send_all(vr->v4); vr->v4->garp_pending = false; } @@ -2013,16 +2030,18 @@ void vrrp_if_up(struct interface *ifp) if (vr->v6->advert_pending) { DEBUGD(&vrrp_dbg_proto, VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX_FAM "Interface up; sending pending advertisement", - vr->vrid); + vr->vrid, family2str(vr->v6->family)); vrrp_send_advertisement(vr->v6); vr->v6->advert_pending = false; } if (vr->v6->ndisc_pending) { DEBUGD(&vrrp_dbg_proto, VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX_FAM "Interface up; sending pending Unsolicited Neighbor Advertisement", - vr->vrid); + vr->vrid, family2str(vr->v6->family)); vrrp_ndisc_una_send_all(vr->v6); vr->v6->ndisc_pending = false; } diff --git a/vrrpd/vrrp.h b/vrrpd/vrrp.h index 99cebd5c8a..9513009e70 100644 --- a/vrrpd/vrrp.h +++ b/vrrpd/vrrp.h @@ -41,7 +41,8 @@ #define VRRP_MCASTV6_GROUP 0xff020000000000000000000000000012 #define IPPROTO_VRRP 112 -#define VRRP_LOGPFX_VRID "[VRID: %u] " +#define VRRP_LOGPFX_VRID "[VRID %u] " +#define VRRP_LOGPFX_FAM "[%s] " /* Default defaults */ #define VRRP_DEFAULT_PRIORITY 100 diff --git a/vrrpd/vrrp_arp.c b/vrrpd/vrrp_arp.c index dd3c635beb..8e903e137f 100644 --- a/vrrpd/vrrp_arp.c +++ b/vrrpd/vrrp_arp.c @@ -123,9 +123,9 @@ void vrrp_garp_send(struct vrrp_router *r, struct in_addr *v4) /* If the interface doesn't support ARP, don't try sending */ if (ifp->flags & IFF_NOARP) { zlog_warn( - VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Unable to send gratuitous ARP on %s; has IFF_NOARP\n", - r->vr->vrid, ifp->name); + r->vr->vrid, family2str(r->family), ifp->name); return; } @@ -136,18 +136,18 @@ void vrrp_garp_send(struct vrrp_router *r, struct in_addr *v4) inet_ntop(AF_INET, v4, astr, sizeof(astr)); DEBUGD(&vrrp_dbg_arp, - VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Sending gratuitous ARP on %s for %s", - r->vr->vrid, ifp->name, astr); + r->vr->vrid, family2str(r->family), ifp->name, astr); if (DEBUG_MODE_CHECK(&vrrp_dbg_arp, DEBUG_MODE_ALL)) zlog_hexdump(garpbuf, garpbuf_len); sent_len = vrrp_send_garp(ifp, garpbuf, garpbuf_len); if (sent_len < 0) - zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID + zlog_warn(VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Error sending gratuitous ARP on %s for %s", - r->vr->vrid, ifp->name, astr); + r->vr->vrid, family2str(r->family), ifp->name, astr); else ++r->stats.garp_tx_cnt; } @@ -161,9 +161,9 @@ void vrrp_garp_send_all(struct vrrp_router *r) /* If the interface doesn't support ARP, don't try sending */ if (ifp->flags & IFF_NOARP) { zlog_warn( - VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Unable to send gratuitous ARP on %s; has IFF_NOARP\n", - r->vr->vrid, ifp->name); + r->vr->vrid, family2str(r->family), ifp->name); return; } diff --git a/vrrpd/vrrp_ndisc.c b/vrrpd/vrrp_ndisc.c index 0f59b23007..a9b15a1d16 100644 --- a/vrrpd/vrrp_ndisc.c +++ b/vrrpd/vrrp_ndisc.c @@ -170,9 +170,9 @@ int vrrp_ndisc_una_send(struct vrrp_router *r, struct ipaddr *ip) ipaddr2str(ip, ipbuf, sizeof(ipbuf)); DEBUGD(&vrrp_dbg_ndisc, - VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Sending unsolicited Neighbor Advertisement on %s for %s", - r->vr->vrid, ifp->name, ipbuf); + r->vr->vrid, family2str(r->family), ifp->name, ipbuf); if (DEBUG_MODE_CHECK(&vrrp_dbg_ndisc, DEBUG_MODE_ALL) && DEBUG_MODE_CHECK(&vrrp_dbg_pkt, DEBUG_MODE_ALL)) @@ -183,9 +183,9 @@ int vrrp_ndisc_una_send(struct vrrp_router *r, struct ipaddr *ip) if (len < 0) { zlog_err( - VRRP_LOGPFX VRRP_LOGPFX_VRID + VRRP_LOGPFX VRRP_LOGPFX_VRID VRRP_LOGPFX_FAM "Error sending unsolicited Neighbor Advertisement on %s for %s", - r->vr->vrid, ifp->name, ipbuf); + r->vr->vrid, family2str(r->family), ifp->name, ipbuf); ret = -1; } else { ++r->stats.una_tx_cnt; diff --git a/vrrpd/vrrp_packet.c b/vrrpd/vrrp_packet.c index 551e142e54..970c8d7d7e 100644 --- a/vrrpd/vrrp_packet.c +++ b/vrrpd/vrrp_packet.c @@ -156,22 +156,22 @@ size_t vrrp_pkt_adver_dump(char *buf, size_t buflen, struct vrrp_pkt *pkt) struct vrrp_hdr *hdr = &pkt->hdr; buf[0] = 0x00; - snprintf(tmpbuf, sizeof(tmpbuf), "Version: %u\n", (hdr->vertype >> 4)); + snprintf(tmpbuf, sizeof(tmpbuf), "version %u, ", (hdr->vertype >> 4)); rs += strlcat(buf, tmpbuf, buflen); - snprintf(tmpbuf, sizeof(tmpbuf), "Type: %u (%s)\n", + snprintf(tmpbuf, sizeof(tmpbuf), "type %u (%s), ", (hdr->vertype & 0x0F), vrrp_packet_names[(hdr->vertype & 0x0F)]); rs += strlcat(buf, tmpbuf, buflen); - snprintf(tmpbuf, sizeof(tmpbuf), "VRID: %u\n", hdr->vrid); + snprintf(tmpbuf, sizeof(tmpbuf), "vrid %u, ", hdr->vrid); rs += strlcat(buf, tmpbuf, buflen); - snprintf(tmpbuf, sizeof(tmpbuf), "Priority: %u\n", hdr->priority); + snprintf(tmpbuf, sizeof(tmpbuf), "priority %u, ", hdr->priority); rs += strlcat(buf, tmpbuf, buflen); - snprintf(tmpbuf, sizeof(tmpbuf), "Count IPvX: %u\n", hdr->naddr); + snprintf(tmpbuf, sizeof(tmpbuf), "#%u addresses, ", hdr->naddr); rs += strlcat(buf, tmpbuf, buflen); - snprintf(tmpbuf, sizeof(tmpbuf), "Max Adver Int: %u\n", + snprintf(tmpbuf, sizeof(tmpbuf), "max adver int %u, ", ntohs(hdr->v3.adver_int)); rs += strlcat(buf, tmpbuf, buflen); - snprintf(tmpbuf, sizeof(tmpbuf), "Checksum: %x\n", ntohs(hdr->chksum)); + snprintf(tmpbuf, sizeof(tmpbuf), "checksum %x", ntohs(hdr->chksum)); rs += strlcat(buf, tmpbuf, buflen); return rs;