zebra: Move incoming netlink interface address change events to the dplane pthread#9052
Conversation
polychaeta
left a comment
There was a problem hiding this comment.
Thanks for your contribution to FRR!
Click for style suggestions
To apply these suggestions:
curl -s https://gist.githubusercontent.com/polychaeta/b552cfe2ab56a620b35f5e2f52187ae4/raw/f2cbe7188e5497ab42b3cf64bfc21d42a78fa281/cr_9052_1626285782.diff | git apply
diff --git a/zebra/if_netlink.c b/zebra/if_netlink.c
index b00cbc3cb..8935e15f9 100644
--- a/zebra/if_netlink.c
+++ b/zebra/if_netlink.c
@@ -1486,11 +1486,11 @@ int netlink_interface_addr_dplane(struct nlmsghdr *h, ns_id_t ns_id,
len = h->nlmsg_len - NLMSG_LENGTH(sizeof(struct ifaddrmsg));
if (len < 0) {
if (IS_ZEBRA_DEBUG_KERNEL)
- zlog_debug("%s: %s: netlink msg bad size: %d %zu",
- __func__, nl_msg_type_to_str(h->nlmsg_type),
- h->nlmsg_len,
- (size_t)NLMSG_LENGTH(
- sizeof(struct ifaddrmsg)));
+ zlog_debug(
+ "%s: %s: netlink msg bad size: %d %zu",
+ __func__, nl_msg_type_to_str(h->nlmsg_type),
+ h->nlmsg_len,
+ (size_t)NLMSG_LENGTH(sizeof(struct ifaddrmsg)));
return -1;
}
@@ -1505,9 +1505,9 @@ int netlink_interface_addr_dplane(struct nlmsghdr *h, ns_id_t ns_id,
if (IS_ZEBRA_DEBUG_KERNEL) { /* remove this line to see initial ifcfg */
char buf[PREFIX_STRLEN];
- zlog_debug("%s: %s ifindex %u flags 0x%x:",
- __func__, nl_msg_type_to_str(h->nlmsg_type),
- ifa->ifa_index, kernel_flags);
+ zlog_debug("%s: %s ifindex %u flags 0x%x:", __func__,
+ nl_msg_type_to_str(h->nlmsg_type), ifa->ifa_index,
+ kernel_flags);
if (tb[IFA_LOCAL])
zlog_debug(" IFA_LOCAL %s/%d",
inet_ntop(ifa->ifa_family,
@@ -1540,8 +1540,8 @@ int netlink_interface_addr_dplane(struct nlmsghdr *h, ns_id_t ns_id,
/* Validate prefix length */
- if (ifa->ifa_family == AF_INET &&
- ifa->ifa_prefixlen > IPV4_MAX_BITLEN) {
+ if (ifa->ifa_family == AF_INET
+ && ifa->ifa_prefixlen > IPV4_MAX_BITLEN) {
if (IS_ZEBRA_DEBUG_KERNEL)
zlog_debug("%s: %s: Invalid prefix length: %u",
__func__, nl_msg_type_to_str(h->nlmsg_type),
@@ -1563,8 +1563,8 @@ int netlink_interface_addr_dplane(struct nlmsghdr *h, ns_id_t ns_id,
* notification till IPv6 DAD has completed, but at init
* time, FRR does query for and will receive all addresses.
*/
- if (h->nlmsg_type == RTM_NEWADDR &&
- (kernel_flags & (IFA_F_DADFAILED | IFA_F_TENTATIVE))) {
+ if (h->nlmsg_type == RTM_NEWADDR
+ && (kernel_flags & (IFA_F_DADFAILED | IFA_F_TENTATIVE))) {
if (IS_ZEBRA_DEBUG_KERNEL)
zlog_debug("%s: %s: Invalid/tentative addr",
__func__,
@@ -1682,8 +1682,8 @@ int netlink_interface_addr_ctx(struct zebra_dplane_ctx *ctx)
if (zns == NULL) {
/* No ns - deleted maybe? */
if (IS_ZEBRA_DEBUG_KERNEL)
- zlog_debug("%s: can't find zns id %u",
- __func__, nsinfo->ns_id);
+ zlog_debug("%s: can't find zns id %u", __func__,
+ nsinfo->ns_id);
goto done;
}
@@ -1700,8 +1700,8 @@ int netlink_interface_addr_ctx(struct zebra_dplane_ctx *ctx)
addr = dplane_ctx_get_intf_addr(ctx);
if (IS_ZEBRA_DEBUG_KERNEL)
- zlog_debug("%s: %s: ifindex %u, addr %pFX",
- __func__, dplane_op2str(op), ifindex, addr);
+ zlog_debug("%s: %s: ifindex %u, addr %pFX", __func__,
+ dplane_op2str(op), ifindex, addr);
/* Is there a peer or broadcast address? */
if (dplane_ctx_intf_has_dest(ctx)) {
@@ -1727,30 +1727,27 @@ int netlink_interface_addr_ctx(struct zebra_dplane_ctx *ctx)
/* Register interface address to the interface. */
if (addr->family == AF_INET) {
if (op == DPLANE_OP_INTF_ADDR_ADD)
- connected_add_ipv4(ifp, flags, &addr->u.prefix4,
- addr->prefixlen,
- dest ? &dest->u.prefix4 : NULL,
- label, metric);
+ connected_add_ipv4(
+ ifp, flags, &addr->u.prefix4, addr->prefixlen,
+ dest ? &dest->u.prefix4 : NULL, label, metric);
else if (CHECK_FLAG(flags, ZEBRA_IFA_PEER)) {
/* Delete with a peer address */
- connected_delete_ipv4(
- ifp, flags, &addr->u.prefix4,
- addr->prefixlen, &dest->u.prefix4);
+ connected_delete_ipv4(ifp, flags, &addr->u.prefix4,
+ addr->prefixlen,
+ &dest->u.prefix4);
} else
- connected_delete_ipv4(
- ifp, flags, &addr->u.prefix4,
- addr->prefixlen, NULL);
+ connected_delete_ipv4(ifp, flags, &addr->u.prefix4,
+ addr->prefixlen, NULL);
}
if (addr->family == AF_INET6) {
if (op == DPLANE_OP_INTF_ADDR_ADD) {
- connected_add_ipv6(ifp, flags,
- &addr->u.prefix6,
+ connected_add_ipv6(ifp, flags, &addr->u.prefix6,
dest ? &dest->u.prefix6 : NULL,
addr->prefixlen, label, metric);
} else
- connected_delete_ipv6(ifp, &addr->u.prefix6,
- NULL, addr->prefixlen);
+ connected_delete_ipv6(ifp, &addr->u.prefix6, NULL,
+ addr->prefixlen);
}
/*
diff --git a/zebra/interface.c b/zebra/interface.c
index aa2c51327..5a44852bf 100644
--- a/zebra/interface.c
+++ b/zebra/interface.c
@@ -1212,7 +1212,7 @@ void zebra_if_addr_update_ctx(struct zebra_dplane_ctx *ctx)
netlink_interface_addr_ctx(ctx);
#else
dplane_ctx_fini(&ctx);
-#endif /* HAVE_NETLINK */
+#endif /* HAVE_NETLINK */
}
/* Output prefix string to vty. */
diff --git a/zebra/kernel_netlink.c b/zebra/kernel_netlink.c
index 0b4832695..007280d1f 100644
--- a/zebra/kernel_netlink.c
+++ b/zebra/kernel_netlink.c
@@ -444,8 +444,8 @@ static int kernel_read(struct thread *thread)
*/
int kernel_dplane_read(struct zebra_dplane_info *info)
{
- netlink_parse_info(dplane_netlink_information_fetch, &info->nls,
- info, 5, 0);
+ netlink_parse_info(dplane_netlink_information_fetch, &info->nls, info,
+ 5, 0);
return 0;
}
@@ -531,9 +531,8 @@ static void netlink_install_filter(int sock, uint32_t pid, uint32_t dplane_pid)
safe_strerror(errno));
}
-void netlink_parse_rtattr_flags(struct rtattr **tb, int max,
- struct rtattr *rta, int len,
- unsigned short flags)
+void netlink_parse_rtattr_flags(struct rtattr **tb, int max, struct rtattr *rta,
+ int len, unsigned short flags)
{
unsigned short type;
@@ -973,9 +972,8 @@ int netlink_parse_info(int (*filter)(struct nlmsghdr *, ns_id_t, int),
/* Error handling. */
if (h->nlmsg_type == NLMSG_ERROR) {
- int err = netlink_parse_error(nl, h,
- zns->is_cmd,
- startup);
+ int err = netlink_parse_error(
+ nl, h, zns->is_cmd, startup);
if (err == 1) {
if (!(h->nlmsg_flags & NLM_F_MULTI))
return 0;
@@ -1190,8 +1188,8 @@ static int nl_batch_read_resp(struct nl_batch *bth)
}
if (h->nlmsg_type == NLMSG_ERROR) {
- int err = netlink_parse_error(nl, h,
- bth->zns->is_cmd, false);
+ int err = netlink_parse_error(nl, h, bth->zns->is_cmd,
+ false);
if (err == -1)
dplane_ctx_set_status(
@@ -1510,8 +1508,8 @@ void kernel_init(struct zebra_ns *zns)
/* Outbound socket for dplane programming of the host OS. */
snprintf(zns->netlink_dplane_out.name,
- sizeof(zns->netlink_dplane_out.name),
- "netlink-dp (NS %u)", zns->ns_id);
+ sizeof(zns->netlink_dplane_out.name), "netlink-dp (NS %u)",
+ zns->ns_id);
zns->netlink_dplane_out.sock = -1;
if (netlink_socket(&zns->netlink_dplane_out, 0, zns->ns_id) < 0) {
zlog_err("Failure to create %s socket",
@@ -1521,8 +1519,8 @@ void kernel_init(struct zebra_ns *zns)
/* Inbound socket for OS events coming to the dplane. */
snprintf(zns->netlink_dplane_in.name,
- sizeof(zns->netlink_dplane_in.name),
- "netlink-dp-in (NS %u)", zns->ns_id);
+ sizeof(zns->netlink_dplane_in.name), "netlink-dp-in (NS %u)",
+ zns->ns_id);
zns->netlink_dplane_in.sock = -1;
if (netlink_socket(&zns->netlink_dplane_in, groups, zns->ns_id) < 0) {
zlog_err("Failure to create %s socket",
@@ -1599,8 +1597,7 @@ void kernel_init(struct zebra_ns *zns)
/* Set filter for inbound sockets, to exclude events we've generated
* ourselves.
*/
- netlink_install_filter(zns->netlink.sock,
- zns->netlink_cmd.snl.nl_pid,
+ netlink_install_filter(zns->netlink.sock, zns->netlink_cmd.snl.nl_pid,
zns->netlink_dplane_out.snl.nl_pid);
netlink_install_filter(zns->netlink_dplane_in.sock,
diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c
index 1290a4524..2a731b687 100644
--- a/zebra/kernel_socket.c
+++ b/zebra/kernel_socket.c
@@ -816,7 +816,7 @@ static void ifam_read_mesg(struct ifa_msghdr *ifm, union sockunion *addr,
__func__, ifm->ifam_index,
(ifnlen ? ifname : "(nil)"),
rtatostr(ifm->ifam_addrs, fbuf, sizeof(fbuf)),
- ifm->ifam_flags, addr, masklen, brd, &dst,
+ ifm->ifam_flags, addr, masklen, brd, &dst,
&gateway);
} break;
default:
@@ -938,9 +938,10 @@ static int rtm_read_mesg(struct rt_msghdr *rtm, union sockunion *dest,
/* rt_msghdr version check. */
if (rtm->rtm_version != RTM_VERSION)
- flog_warn(EC_ZEBRA_RTM_VERSION_MISMATCH,
- "Routing message version different %d should be %d.This may cause problem",
- rtm->rtm_version, RTM_VERSION);
+ flog_warn(
+ EC_ZEBRA_RTM_VERSION_MISMATCH,
+ "Routing message version different %d should be %d.This may cause problem",
+ rtm->rtm_version, RTM_VERSION);
/* Be sure structure is cleared */
memset(dest, 0, sizeof(union sockunion));
diff --git a/zebra/zebra_dplane.c b/zebra/zebra_dplane.c
index f6185361f..ac55919ec 100644
--- a/zebra/zebra_dplane.c
+++ b/zebra/zebra_dplane.c
@@ -4840,8 +4840,8 @@ static int dplane_incoming_read(struct thread *event)
kernel_dplane_read(&zi->info);
/* Re-start read task */
- thread_add_read(zdplane_info.dg_master, dplane_incoming_read,
- zi, zi->info.nls.sock, &zi->t_read);
+ thread_add_read(zdplane_info.dg_master, dplane_incoming_read, zi,
+ zi->info.nls.sock, &zi->t_read);
return 0;
}
@@ -4860,12 +4860,11 @@ void zebra_dplane_ns_enable(struct zebra_ns *zns, bool enabled)
struct dplane_zns_info *zi;
if (IS_ZEBRA_DEBUG_DPLANE)
- zlog_debug("%s: %s for nsid %u",
- __func__, (enabled ? "ENABLED" : "DISABLED"),
- zns->ns_id);
+ zlog_debug("%s: %s for nsid %u", __func__,
+ (enabled ? "ENABLED" : "DISABLED"), zns->ns_id);
/* Search for an existing zns info entry */
- frr_each(zns_info_list, &zdplane_info.dg_zns_list, zi) {
+ frr_each (zns_info_list, &zdplane_info.dg_zns_list, zi) {
if (zi->info.ns_id == zns->ns_id)
break;
}
@@ -4896,8 +4895,8 @@ void zebra_dplane_ns_enable(struct zebra_ns *zns, bool enabled)
zns_info_list_del(&zdplane_info.dg_zns_list, zi);
if (zdplane_info.dg_master)
- thread_cancel_async(zdplane_info.dg_master,
- &zi->t_read, NULL);
+ thread_cancel_async(zdplane_info.dg_master, &zi->t_read,
+ NULL);
XFREE(MTYPE_DP_NS, zi);
}
@@ -5073,8 +5072,8 @@ static void kernel_dplane_log_detail(struct zebra_dplane_ctx *ctx)
case DPLANE_OP_INTF_ADDR_DEL:
zlog_debug("Dplane incoming op %s, intf %s, addr %pFX",
dplane_op2str(dplane_ctx_get_op(ctx)),
- dplane_ctx_get_ifname(ctx),
- dplane_ctx_get_intf_addr(ctx));
+ dplane_ctx_get_ifname(ctx),
+ dplane_ctx_get_intf_addr(ctx));
break;
}
}
@@ -5564,7 +5563,7 @@ static int dplane_check_shutdown_status(struct thread *event)
zlog_debug("Zebra dataplane shutdown status check called");
/* Remove any zns info entries as we stop the dplane pthread. */
- frr_each_safe(zns_info_list, &zdplane_info.dg_zns_list, zi) {
+ frr_each_safe (zns_info_list, &zdplane_info.dg_zns_list, zi) {
zns_info_list_del(&zdplane_info.dg_zns_list, zi);
if (zdplane_info.dg_master)
@@ -5904,11 +5903,10 @@ void zebra_dplane_start(void)
&zdplane_info.dg_t_update);
/* Enqueue reads if necessary */
- frr_each(zns_info_list, &zdplane_info.dg_zns_list, zi) {
+ frr_each (zns_info_list, &zdplane_info.dg_zns_list, zi) {
#if defined(HAVE_NETLINK)
- thread_add_read(zdplane_info.dg_master,
- dplane_incoming_read, zi,
- zi->info.nls.sock, &zi->t_read);
+ thread_add_read(zdplane_info.dg_master, dplane_incoming_read,
+ zi, zi->info.nls.sock, &zi->t_read);
#endif
}
diff --git a/zebra/zebra_dplane.h b/zebra/zebra_dplane.h
index 04e5bd22d..ff62b3fa7 100644
--- a/zebra/zebra_dplane.h
+++ b/zebra/zebra_dplane.h
@@ -474,8 +474,7 @@ void dplane_ctx_set_intf_dest(struct zebra_dplane_ctx *ctx,
const struct prefix *p);
bool dplane_ctx_intf_has_label(const struct zebra_dplane_ctx *ctx);
const char *dplane_ctx_get_intf_label(const struct zebra_dplane_ctx *ctx);
-void dplane_ctx_set_intf_label(struct zebra_dplane_ctx *ctx,
- const char *label);
+void dplane_ctx_set_intf_label(struct zebra_dplane_ctx *ctx, const char *label);
/* Accessors for MAC information */
vlanid_t dplane_ctx_mac_get_vlan(const struct zebra_dplane_ctx *ctx);
If you are a new contributor to FRR, please see our contributing guidelines.
After making changes, you do not need to create a new PR. You should perform an amend or interactive rebase followed by a force push.
Outdated results 💚Basic BGPD CI results: SUCCESS, 0 tests failed
For details, please contact louberger |
5568008 to
6706d8d
Compare
polychaeta
left a comment
There was a problem hiding this comment.
Thanks for your contribution to FRR!
Click for style suggestions
To apply these suggestions:
curl -s https://gist.githubusercontent.com/polychaeta/98c026226eeaeb069ab36c34179148b8/raw/0210203e9579cf21ecaf244930d118bfa7a96596/cr_9052_1626360168.diff | git apply
diff --git a/zebra/if_netlink.c b/zebra/if_netlink.c
index d12297ad8..e420aba14 100644
--- a/zebra/if_netlink.c
+++ b/zebra/if_netlink.c
@@ -1486,11 +1486,11 @@ int netlink_interface_addr_dplane(struct nlmsghdr *h, ns_id_t ns_id,
len = h->nlmsg_len - NLMSG_LENGTH(sizeof(struct ifaddrmsg));
if (len < 0) {
if (IS_ZEBRA_DEBUG_KERNEL)
- zlog_debug("%s: %s: netlink msg bad size: %d %zu",
- __func__, nl_msg_type_to_str(h->nlmsg_type),
- h->nlmsg_len,
- (size_t)NLMSG_LENGTH(
- sizeof(struct ifaddrmsg)));
+ zlog_debug(
+ "%s: %s: netlink msg bad size: %d %zu",
+ __func__, nl_msg_type_to_str(h->nlmsg_type),
+ h->nlmsg_len,
+ (size_t)NLMSG_LENGTH(sizeof(struct ifaddrmsg)));
return -1;
}
@@ -1505,9 +1505,9 @@ int netlink_interface_addr_dplane(struct nlmsghdr *h, ns_id_t ns_id,
if (IS_ZEBRA_DEBUG_KERNEL) { /* remove this line to see initial ifcfg */
char buf[PREFIX_STRLEN];
- zlog_debug("%s: %s ifindex %u flags 0x%x:",
- __func__, nl_msg_type_to_str(h->nlmsg_type),
- ifa->ifa_index, kernel_flags);
+ zlog_debug("%s: %s ifindex %u flags 0x%x:", __func__,
+ nl_msg_type_to_str(h->nlmsg_type), ifa->ifa_index,
+ kernel_flags);
if (tb[IFA_LOCAL])
zlog_debug(" IFA_LOCAL %s/%d",
inet_ntop(ifa->ifa_family,
@@ -1540,8 +1540,8 @@ int netlink_interface_addr_dplane(struct nlmsghdr *h, ns_id_t ns_id,
/* Validate prefix length */
- if (ifa->ifa_family == AF_INET &&
- ifa->ifa_prefixlen > IPV4_MAX_BITLEN) {
+ if (ifa->ifa_family == AF_INET
+ && ifa->ifa_prefixlen > IPV4_MAX_BITLEN) {
if (IS_ZEBRA_DEBUG_KERNEL)
zlog_debug("%s: %s: Invalid prefix length: %u",
__func__, nl_msg_type_to_str(h->nlmsg_type),
@@ -1563,8 +1563,8 @@ int netlink_interface_addr_dplane(struct nlmsghdr *h, ns_id_t ns_id,
* notification till IPv6 DAD has completed, but at init
* time, FRR does query for and will receive all addresses.
*/
- if (h->nlmsg_type == RTM_NEWADDR &&
- (kernel_flags & (IFA_F_DADFAILED | IFA_F_TENTATIVE))) {
+ if (h->nlmsg_type == RTM_NEWADDR
+ && (kernel_flags & (IFA_F_DADFAILED | IFA_F_TENTATIVE))) {
if (IS_ZEBRA_DEBUG_KERNEL)
zlog_debug("%s: %s: Invalid/tentative addr",
__func__,
@@ -1682,8 +1682,8 @@ int netlink_interface_addr_ctx(struct zebra_dplane_ctx *ctx)
if (zns == NULL) {
/* No ns - deleted maybe? */
if (IS_ZEBRA_DEBUG_KERNEL)
- zlog_debug("%s: can't find zns id %u",
- __func__, nsinfo->ns_id);
+ zlog_debug("%s: can't find zns id %u", __func__,
+ nsinfo->ns_id);
goto done;
}
@@ -1700,8 +1700,8 @@ int netlink_interface_addr_ctx(struct zebra_dplane_ctx *ctx)
addr = dplane_ctx_get_intf_addr(ctx);
if (IS_ZEBRA_DEBUG_KERNEL)
- zlog_debug("%s: %s: ifindex %u, addr %pFX",
- __func__, dplane_op2str(op), ifindex, addr);
+ zlog_debug("%s: %s: ifindex %u, addr %pFX", __func__,
+ dplane_op2str(op), ifindex, addr);
/* Is there a peer or broadcast address? */
dest = dplane_ctx_get_intf_dest(ctx);
@@ -1727,30 +1727,27 @@ int netlink_interface_addr_ctx(struct zebra_dplane_ctx *ctx)
/* Register interface address to the interface. */
if (addr->family == AF_INET) {
if (op == DPLANE_OP_INTF_ADDR_ADD)
- connected_add_ipv4(ifp, flags, &addr->u.prefix4,
- addr->prefixlen,
- dest ? &dest->u.prefix4 : NULL,
- label, metric);
+ connected_add_ipv4(
+ ifp, flags, &addr->u.prefix4, addr->prefixlen,
+ dest ? &dest->u.prefix4 : NULL, label, metric);
else if (CHECK_FLAG(flags, ZEBRA_IFA_PEER)) {
/* Delete with a peer address */
- connected_delete_ipv4(
- ifp, flags, &addr->u.prefix4,
- addr->prefixlen, &dest->u.prefix4);
+ connected_delete_ipv4(ifp, flags, &addr->u.prefix4,
+ addr->prefixlen,
+ &dest->u.prefix4);
} else
- connected_delete_ipv4(
- ifp, flags, &addr->u.prefix4,
- addr->prefixlen, NULL);
+ connected_delete_ipv4(ifp, flags, &addr->u.prefix4,
+ addr->prefixlen, NULL);
}
if (addr->family == AF_INET6) {
if (op == DPLANE_OP_INTF_ADDR_ADD) {
- connected_add_ipv6(ifp, flags,
- &addr->u.prefix6,
+ connected_add_ipv6(ifp, flags, &addr->u.prefix6,
dest ? &dest->u.prefix6 : NULL,
addr->prefixlen, label, metric);
} else
- connected_delete_ipv6(ifp, &addr->u.prefix6,
- NULL, addr->prefixlen);
+ connected_delete_ipv6(ifp, &addr->u.prefix6, NULL,
+ addr->prefixlen);
}
/*
diff --git a/zebra/interface.c b/zebra/interface.c
index aa2c51327..5a44852bf 100644
--- a/zebra/interface.c
+++ b/zebra/interface.c
@@ -1212,7 +1212,7 @@ void zebra_if_addr_update_ctx(struct zebra_dplane_ctx *ctx)
netlink_interface_addr_ctx(ctx);
#else
dplane_ctx_fini(&ctx);
-#endif /* HAVE_NETLINK */
+#endif /* HAVE_NETLINK */
}
/* Output prefix string to vty. */
diff --git a/zebra/kernel_netlink.c b/zebra/kernel_netlink.c
index 0b4832695..007280d1f 100644
--- a/zebra/kernel_netlink.c
+++ b/zebra/kernel_netlink.c
@@ -444,8 +444,8 @@ static int kernel_read(struct thread *thread)
*/
int kernel_dplane_read(struct zebra_dplane_info *info)
{
- netlink_parse_info(dplane_netlink_information_fetch, &info->nls,
- info, 5, 0);
+ netlink_parse_info(dplane_netlink_information_fetch, &info->nls, info,
+ 5, 0);
return 0;
}
@@ -531,9 +531,8 @@ static void netlink_install_filter(int sock, uint32_t pid, uint32_t dplane_pid)
safe_strerror(errno));
}
-void netlink_parse_rtattr_flags(struct rtattr **tb, int max,
- struct rtattr *rta, int len,
- unsigned short flags)
+void netlink_parse_rtattr_flags(struct rtattr **tb, int max, struct rtattr *rta,
+ int len, unsigned short flags)
{
unsigned short type;
@@ -973,9 +972,8 @@ int netlink_parse_info(int (*filter)(struct nlmsghdr *, ns_id_t, int),
/* Error handling. */
if (h->nlmsg_type == NLMSG_ERROR) {
- int err = netlink_parse_error(nl, h,
- zns->is_cmd,
- startup);
+ int err = netlink_parse_error(
+ nl, h, zns->is_cmd, startup);
if (err == 1) {
if (!(h->nlmsg_flags & NLM_F_MULTI))
return 0;
@@ -1190,8 +1188,8 @@ static int nl_batch_read_resp(struct nl_batch *bth)
}
if (h->nlmsg_type == NLMSG_ERROR) {
- int err = netlink_parse_error(nl, h,
- bth->zns->is_cmd, false);
+ int err = netlink_parse_error(nl, h, bth->zns->is_cmd,
+ false);
if (err == -1)
dplane_ctx_set_status(
@@ -1510,8 +1508,8 @@ void kernel_init(struct zebra_ns *zns)
/* Outbound socket for dplane programming of the host OS. */
snprintf(zns->netlink_dplane_out.name,
- sizeof(zns->netlink_dplane_out.name),
- "netlink-dp (NS %u)", zns->ns_id);
+ sizeof(zns->netlink_dplane_out.name), "netlink-dp (NS %u)",
+ zns->ns_id);
zns->netlink_dplane_out.sock = -1;
if (netlink_socket(&zns->netlink_dplane_out, 0, zns->ns_id) < 0) {
zlog_err("Failure to create %s socket",
@@ -1521,8 +1519,8 @@ void kernel_init(struct zebra_ns *zns)
/* Inbound socket for OS events coming to the dplane. */
snprintf(zns->netlink_dplane_in.name,
- sizeof(zns->netlink_dplane_in.name),
- "netlink-dp-in (NS %u)", zns->ns_id);
+ sizeof(zns->netlink_dplane_in.name), "netlink-dp-in (NS %u)",
+ zns->ns_id);
zns->netlink_dplane_in.sock = -1;
if (netlink_socket(&zns->netlink_dplane_in, groups, zns->ns_id) < 0) {
zlog_err("Failure to create %s socket",
@@ -1599,8 +1597,7 @@ void kernel_init(struct zebra_ns *zns)
/* Set filter for inbound sockets, to exclude events we've generated
* ourselves.
*/
- netlink_install_filter(zns->netlink.sock,
- zns->netlink_cmd.snl.nl_pid,
+ netlink_install_filter(zns->netlink.sock, zns->netlink_cmd.snl.nl_pid,
zns->netlink_dplane_out.snl.nl_pid);
netlink_install_filter(zns->netlink_dplane_in.sock,
diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c
index 1290a4524..2a731b687 100644
--- a/zebra/kernel_socket.c
+++ b/zebra/kernel_socket.c
@@ -816,7 +816,7 @@ static void ifam_read_mesg(struct ifa_msghdr *ifm, union sockunion *addr,
__func__, ifm->ifam_index,
(ifnlen ? ifname : "(nil)"),
rtatostr(ifm->ifam_addrs, fbuf, sizeof(fbuf)),
- ifm->ifam_flags, addr, masklen, brd, &dst,
+ ifm->ifam_flags, addr, masklen, brd, &dst,
&gateway);
} break;
default:
@@ -938,9 +938,10 @@ static int rtm_read_mesg(struct rt_msghdr *rtm, union sockunion *dest,
/* rt_msghdr version check. */
if (rtm->rtm_version != RTM_VERSION)
- flog_warn(EC_ZEBRA_RTM_VERSION_MISMATCH,
- "Routing message version different %d should be %d.This may cause problem",
- rtm->rtm_version, RTM_VERSION);
+ flog_warn(
+ EC_ZEBRA_RTM_VERSION_MISMATCH,
+ "Routing message version different %d should be %d.This may cause problem",
+ rtm->rtm_version, RTM_VERSION);
/* Be sure structure is cleared */
memset(dest, 0, sizeof(union sockunion));
diff --git a/zebra/zebra_dplane.c b/zebra/zebra_dplane.c
index fac5aea7a..fe5f835f7 100644
--- a/zebra/zebra_dplane.c
+++ b/zebra/zebra_dplane.c
@@ -4835,8 +4835,8 @@ static int dplane_incoming_read(struct thread *event)
kernel_dplane_read(&zi->info);
/* Re-start read task */
- thread_add_read(zdplane_info.dg_master, dplane_incoming_read,
- zi, zi->info.nls.sock, &zi->t_read);
+ thread_add_read(zdplane_info.dg_master, dplane_incoming_read, zi,
+ zi->info.nls.sock, &zi->t_read);
return 0;
}
@@ -4855,12 +4855,11 @@ void zebra_dplane_ns_enable(struct zebra_ns *zns, bool enabled)
struct dplane_zns_info *zi;
if (IS_ZEBRA_DEBUG_DPLANE)
- zlog_debug("%s: %s for nsid %u",
- __func__, (enabled ? "ENABLED" : "DISABLED"),
- zns->ns_id);
+ zlog_debug("%s: %s for nsid %u", __func__,
+ (enabled ? "ENABLED" : "DISABLED"), zns->ns_id);
/* Search for an existing zns info entry */
- frr_each(zns_info_list, &zdplane_info.dg_zns_list, zi) {
+ frr_each (zns_info_list, &zdplane_info.dg_zns_list, zi) {
if (zi->info.ns_id == zns->ns_id)
break;
}
@@ -4891,8 +4890,8 @@ void zebra_dplane_ns_enable(struct zebra_ns *zns, bool enabled)
zns_info_list_del(&zdplane_info.dg_zns_list, zi);
if (zdplane_info.dg_master)
- thread_cancel_async(zdplane_info.dg_master,
- &zi->t_read, NULL);
+ thread_cancel_async(zdplane_info.dg_master, &zi->t_read,
+ NULL);
XFREE(MTYPE_DP_NS, zi);
}
@@ -5068,8 +5067,8 @@ static void kernel_dplane_log_detail(struct zebra_dplane_ctx *ctx)
case DPLANE_OP_INTF_ADDR_DEL:
zlog_debug("Dplane incoming op %s, intf %s, addr %pFX",
dplane_op2str(dplane_ctx_get_op(ctx)),
- dplane_ctx_get_ifname(ctx),
- dplane_ctx_get_intf_addr(ctx));
+ dplane_ctx_get_ifname(ctx),
+ dplane_ctx_get_intf_addr(ctx));
break;
}
}
@@ -5559,7 +5558,7 @@ static int dplane_check_shutdown_status(struct thread *event)
zlog_debug("Zebra dataplane shutdown status check called");
/* Remove any zns info entries as we stop the dplane pthread. */
- frr_each_safe(zns_info_list, &zdplane_info.dg_zns_list, zi) {
+ frr_each_safe (zns_info_list, &zdplane_info.dg_zns_list, zi) {
zns_info_list_del(&zdplane_info.dg_zns_list, zi);
if (zdplane_info.dg_master)
@@ -5899,11 +5898,10 @@ void zebra_dplane_start(void)
&zdplane_info.dg_t_update);
/* Enqueue reads if necessary */
- frr_each(zns_info_list, &zdplane_info.dg_zns_list, zi) {
+ frr_each (zns_info_list, &zdplane_info.dg_zns_list, zi) {
#if defined(HAVE_NETLINK)
- thread_add_read(zdplane_info.dg_master,
- dplane_incoming_read, zi,
- zi->info.nls.sock, &zi->t_read);
+ thread_add_read(zdplane_info.dg_master, dplane_incoming_read,
+ zi, zi->info.nls.sock, &zi->t_read);
#endif
}
diff --git a/zebra/zebra_dplane.h b/zebra/zebra_dplane.h
index 04e5bd22d..ff62b3fa7 100644
--- a/zebra/zebra_dplane.h
+++ b/zebra/zebra_dplane.h
@@ -474,8 +474,7 @@ void dplane_ctx_set_intf_dest(struct zebra_dplane_ctx *ctx,
const struct prefix *p);
bool dplane_ctx_intf_has_label(const struct zebra_dplane_ctx *ctx);
const char *dplane_ctx_get_intf_label(const struct zebra_dplane_ctx *ctx);
-void dplane_ctx_set_intf_label(struct zebra_dplane_ctx *ctx,
- const char *label);
+void dplane_ctx_set_intf_label(struct zebra_dplane_ctx *ctx, const char *label);
/* Accessors for MAC information */
vlanid_t dplane_ctx_mac_get_vlan(const struct zebra_dplane_ctx *ctx);
If you are a new contributor to FRR, please see our contributing guidelines.
After making changes, you do not need to create a new PR. You should perform an amend or interactive rebase followed by a force push.
|
Pushed to fix issue with ctx flags |
Outdated results 💚Basic BGPD CI results: SUCCESS, 0 tests failed
For details, please contact louberger |
Continuous Integration Result: FAILEDContinuous Integration Result: FAILEDSee below for issues. This is a comment from an automated CI system. Get source / Pull Request: SuccessfulBuilding Stage: SuccessfulBasic Tests: FailedTopotests Ubuntu 18.04 arm8 part 1: Failed (click for details)Topotests Ubuntu 18.04 arm8 part 1: No useful log foundTopotests Ubuntu 18.04 i386 part 6: Failed (click for details)Topology Test Results are at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-TOPO6U18I386-20286/test Topology Tests failed for Topotests Ubuntu 18.04 i386 part 6: see full log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-20286/artifact/TOPO6U18I386/ErrorLog/log_topotests.txt Topotests Ubuntu 18.04 i386 part 1: Failed (click for details)Topology Test Results are at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-TOPO1U18I386-20286/test Topology Tests failed for Topotests Ubuntu 18.04 i386 part 1: see full log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-20286/artifact/TOPO1U18I386/ErrorLog/log_topotests.txt Topotests Ubuntu 18.04 arm8 part 6: Failed (click for details)Topotests Ubuntu 18.04 arm8 part 6: No useful log foundTopotests debian 10 amd64 part 9: Failed (click for details)Topology Test Results are at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-TOPO9DEB10AMD64-20286/test Topology Tests failed for Topotests debian 10 amd64 part 9: see full log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-20286/artifact/TOPO9DEB10AMD64/ErrorLog/log_topotests.txt Topotests Ubuntu 18.04 arm8 part 9: Failed (click for details)Topotests Ubuntu 18.04 arm8 part 9: No useful log foundTopotests Ubuntu 18.04 amd64 part 9: Failed (click for details)Topology Test Results are at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-TOPO9U18AMD64-20286/test Topology Tests failed for Topotests Ubuntu 18.04 amd64 part 9: see full log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-20286/artifact/TOPO9U18AMD64/ErrorLog/log_topotests.txt Topotests debian 10 amd64 part 6: Failed (click for details)Topology Test Results are at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-TOPO6DEB10AMD64-20286/test Topology Tests failed for Topotests debian 10 amd64 part 6: see full log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-20286/artifact/TOPO6DEB10AMD64/ErrorLog/log_topotests.txt Topotests debian 10 amd64 part 1: Failed (click for details)Topology Test Results are at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-TOPO1DEB10AMD64-20286/test Topology Tests failed for Topotests debian 10 amd64 part 1: see full log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-20286/artifact/TOPO1DEB10AMD64/ErrorLog/log_topotests.txt Topotests Ubuntu 18.04 i386 part 9: Failed (click for details)Topology Test Results are at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-TOPO9U18I386-20286/test Topology Tests failed for Topotests Ubuntu 18.04 i386 part 9: see full log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-20286/artifact/TOPO9U18I386/ErrorLog/log_topotests.txt Topotests Ubuntu 18.04 amd64 part 6: Failed (click for details)Topology Test Results are at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-TOPO6U18AMD64-20286/test Topology Tests failed for Topotests Ubuntu 18.04 amd64 part 6: see full log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-20286/artifact/TOPO6U18AMD64/ErrorLog/log_topotests.txt Topotests Ubuntu 18.04 amd64 part 1: Failed (click for details)Topology Test Results are at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-TP1U1804AMD64-20286/test Topology Tests failed for Topotests Ubuntu 18.04 amd64 part 1: see full log at https://ci1.netdef.org/browse/FRR-FRRPULLREQ-20286/artifact/TP1U1804AMD64/ErrorLog/log_topotests.txt Successful on other platforms/tests
|
| * for the FIB e.g., and one for incoming events from the OS. | ||
| */ | ||
| struct nlsock netlink_dplane_out; | ||
| struct nlsock netlink_dplane_in; |
There was a problem hiding this comment.
is there really need to have 2 sockets ?
There was a problem hiding this comment.
Yes, like the sockets used by the main pthread: one socket listens for asynchronous incoming events, the other is used to send outbound changes, and it needs to read results synchronously.
|
|
||
| DPLANE_OP_NEIGH_TABLE_UPDATE, | ||
| DPLANE_OP_GRE_SET, | ||
|
|
There was a problem hiding this comment.
semantic used does not explicitly say this message is for incoming operation or outgoing operation.
should we have to split the lists in two or not ?
There was a problem hiding this comment.
I don't think the direction really matters, does it - the handlers of the various operation codes know what to do?
6706d8d to
d3848d5
Compare
polychaeta
left a comment
There was a problem hiding this comment.
Thanks for your contribution to FRR!
Click for style suggestions
To apply these suggestions:
curl -s https://gist.githubusercontent.com/polychaeta/540ec102e2d7ed9ec5189cc630a6a4a5/raw/189df85033abc4f9bc87f0dca1ac48d01c7003c7/cr_9052_1626441326.diff | git apply
diff --git a/zebra/if_netlink.c b/zebra/if_netlink.c
index ee6843b70..b8b2db360 100644
--- a/zebra/if_netlink.c
+++ b/zebra/if_netlink.c
@@ -1486,11 +1486,11 @@ int netlink_interface_addr_dplane(struct nlmsghdr *h, ns_id_t ns_id,
len = h->nlmsg_len - NLMSG_LENGTH(sizeof(struct ifaddrmsg));
if (len < 0) {
if (IS_ZEBRA_DEBUG_KERNEL)
- zlog_debug("%s: %s: netlink msg bad size: %d %zu",
- __func__, nl_msg_type_to_str(h->nlmsg_type),
- h->nlmsg_len,
- (size_t)NLMSG_LENGTH(
- sizeof(struct ifaddrmsg)));
+ zlog_debug(
+ "%s: %s: netlink msg bad size: %d %zu",
+ __func__, nl_msg_type_to_str(h->nlmsg_type),
+ h->nlmsg_len,
+ (size_t)NLMSG_LENGTH(sizeof(struct ifaddrmsg)));
return -1;
}
@@ -1505,8 +1505,8 @@ int netlink_interface_addr_dplane(struct nlmsghdr *h, ns_id_t ns_id,
if (IS_ZEBRA_DEBUG_KERNEL) { /* remove this line to see initial ifcfg */
char buf[PREFIX_STRLEN];
- zlog_debug("%s: %s nsid %u ifindex %u flags 0x%x:",
- __func__, nl_msg_type_to_str(h->nlmsg_type), ns_id,
+ zlog_debug("%s: %s nsid %u ifindex %u flags 0x%x:", __func__,
+ nl_msg_type_to_str(h->nlmsg_type), ns_id,
ifa->ifa_index, kernel_flags);
if (tb[IFA_LOCAL])
zlog_debug(" IFA_LOCAL %s/%d",
@@ -1540,8 +1540,8 @@ int netlink_interface_addr_dplane(struct nlmsghdr *h, ns_id_t ns_id,
/* Validate prefix length */
- if (ifa->ifa_family == AF_INET &&
- ifa->ifa_prefixlen > IPV4_MAX_BITLEN) {
+ if (ifa->ifa_family == AF_INET
+ && ifa->ifa_prefixlen > IPV4_MAX_BITLEN) {
if (IS_ZEBRA_DEBUG_KERNEL)
zlog_debug("%s: %s: Invalid prefix length: %u",
__func__, nl_msg_type_to_str(h->nlmsg_type),
@@ -1563,8 +1563,8 @@ int netlink_interface_addr_dplane(struct nlmsghdr *h, ns_id_t ns_id,
* notification till IPv6 DAD has completed, but at init
* time, FRR does query for and will receive all addresses.
*/
- if (h->nlmsg_type == RTM_NEWADDR &&
- (kernel_flags & (IFA_F_DADFAILED | IFA_F_TENTATIVE))) {
+ if (h->nlmsg_type == RTM_NEWADDR
+ && (kernel_flags & (IFA_F_DADFAILED | IFA_F_TENTATIVE))) {
if (IS_ZEBRA_DEBUG_KERNEL)
zlog_debug("%s: %s: Invalid/tentative addr",
__func__,
@@ -1700,8 +1700,8 @@ int netlink_interface_addr_ctx(struct zebra_dplane_ctx *ctx)
addr = dplane_ctx_get_intf_addr(ctx);
if (IS_ZEBRA_DEBUG_KERNEL)
- zlog_debug("%s: %s: ifindex %u, addr %pFX",
- __func__, dplane_op2str(op), ifindex, addr);
+ zlog_debug("%s: %s: ifindex %u, addr %pFX", __func__,
+ dplane_op2str(op), ifindex, addr);
/* Is there a peer or broadcast address? */
dest = dplane_ctx_get_intf_dest(ctx);
@@ -1727,30 +1727,27 @@ int netlink_interface_addr_ctx(struct zebra_dplane_ctx *ctx)
/* Register interface address to the interface. */
if (addr->family == AF_INET) {
if (op == DPLANE_OP_INTF_ADDR_ADD)
- connected_add_ipv4(ifp, flags, &addr->u.prefix4,
- addr->prefixlen,
- dest ? &dest->u.prefix4 : NULL,
- label, metric);
+ connected_add_ipv4(
+ ifp, flags, &addr->u.prefix4, addr->prefixlen,
+ dest ? &dest->u.prefix4 : NULL, label, metric);
else if (CHECK_FLAG(flags, ZEBRA_IFA_PEER)) {
/* Delete with a peer address */
- connected_delete_ipv4(
- ifp, flags, &addr->u.prefix4,
- addr->prefixlen, &dest->u.prefix4);
+ connected_delete_ipv4(ifp, flags, &addr->u.prefix4,
+ addr->prefixlen,
+ &dest->u.prefix4);
} else
- connected_delete_ipv4(
- ifp, flags, &addr->u.prefix4,
- addr->prefixlen, NULL);
+ connected_delete_ipv4(ifp, flags, &addr->u.prefix4,
+ addr->prefixlen, NULL);
}
if (addr->family == AF_INET6) {
if (op == DPLANE_OP_INTF_ADDR_ADD) {
- connected_add_ipv6(ifp, flags,
- &addr->u.prefix6,
+ connected_add_ipv6(ifp, flags, &addr->u.prefix6,
dest ? &dest->u.prefix6 : NULL,
addr->prefixlen, label, metric);
} else
- connected_delete_ipv6(ifp, &addr->u.prefix6,
- NULL, addr->prefixlen);
+ connected_delete_ipv6(ifp, &addr->u.prefix6, NULL,
+ addr->prefixlen);
}
/*
diff --git a/zebra/interface.c b/zebra/interface.c
index aa2c51327..5a44852bf 100644
--- a/zebra/interface.c
+++ b/zebra/interface.c
@@ -1212,7 +1212,7 @@ void zebra_if_addr_update_ctx(struct zebra_dplane_ctx *ctx)
netlink_interface_addr_ctx(ctx);
#else
dplane_ctx_fini(&ctx);
-#endif /* HAVE_NETLINK */
+#endif /* HAVE_NETLINK */
}
/* Output prefix string to vty. */
diff --git a/zebra/kernel_netlink.c b/zebra/kernel_netlink.c
index 0b4832695..007280d1f 100644
--- a/zebra/kernel_netlink.c
+++ b/zebra/kernel_netlink.c
@@ -444,8 +444,8 @@ static int kernel_read(struct thread *thread)
*/
int kernel_dplane_read(struct zebra_dplane_info *info)
{
- netlink_parse_info(dplane_netlink_information_fetch, &info->nls,
- info, 5, 0);
+ netlink_parse_info(dplane_netlink_information_fetch, &info->nls, info,
+ 5, 0);
return 0;
}
@@ -531,9 +531,8 @@ static void netlink_install_filter(int sock, uint32_t pid, uint32_t dplane_pid)
safe_strerror(errno));
}
-void netlink_parse_rtattr_flags(struct rtattr **tb, int max,
- struct rtattr *rta, int len,
- unsigned short flags)
+void netlink_parse_rtattr_flags(struct rtattr **tb, int max, struct rtattr *rta,
+ int len, unsigned short flags)
{
unsigned short type;
@@ -973,9 +972,8 @@ int netlink_parse_info(int (*filter)(struct nlmsghdr *, ns_id_t, int),
/* Error handling. */
if (h->nlmsg_type == NLMSG_ERROR) {
- int err = netlink_parse_error(nl, h,
- zns->is_cmd,
- startup);
+ int err = netlink_parse_error(
+ nl, h, zns->is_cmd, startup);
if (err == 1) {
if (!(h->nlmsg_flags & NLM_F_MULTI))
return 0;
@@ -1190,8 +1188,8 @@ static int nl_batch_read_resp(struct nl_batch *bth)
}
if (h->nlmsg_type == NLMSG_ERROR) {
- int err = netlink_parse_error(nl, h,
- bth->zns->is_cmd, false);
+ int err = netlink_parse_error(nl, h, bth->zns->is_cmd,
+ false);
if (err == -1)
dplane_ctx_set_status(
@@ -1510,8 +1508,8 @@ void kernel_init(struct zebra_ns *zns)
/* Outbound socket for dplane programming of the host OS. */
snprintf(zns->netlink_dplane_out.name,
- sizeof(zns->netlink_dplane_out.name),
- "netlink-dp (NS %u)", zns->ns_id);
+ sizeof(zns->netlink_dplane_out.name), "netlink-dp (NS %u)",
+ zns->ns_id);
zns->netlink_dplane_out.sock = -1;
if (netlink_socket(&zns->netlink_dplane_out, 0, zns->ns_id) < 0) {
zlog_err("Failure to create %s socket",
@@ -1521,8 +1519,8 @@ void kernel_init(struct zebra_ns *zns)
/* Inbound socket for OS events coming to the dplane. */
snprintf(zns->netlink_dplane_in.name,
- sizeof(zns->netlink_dplane_in.name),
- "netlink-dp-in (NS %u)", zns->ns_id);
+ sizeof(zns->netlink_dplane_in.name), "netlink-dp-in (NS %u)",
+ zns->ns_id);
zns->netlink_dplane_in.sock = -1;
if (netlink_socket(&zns->netlink_dplane_in, groups, zns->ns_id) < 0) {
zlog_err("Failure to create %s socket",
@@ -1599,8 +1597,7 @@ void kernel_init(struct zebra_ns *zns)
/* Set filter for inbound sockets, to exclude events we've generated
* ourselves.
*/
- netlink_install_filter(zns->netlink.sock,
- zns->netlink_cmd.snl.nl_pid,
+ netlink_install_filter(zns->netlink.sock, zns->netlink_cmd.snl.nl_pid,
zns->netlink_dplane_out.snl.nl_pid);
netlink_install_filter(zns->netlink_dplane_in.sock,
diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c
index 1290a4524..2a731b687 100644
--- a/zebra/kernel_socket.c
+++ b/zebra/kernel_socket.c
@@ -816,7 +816,7 @@ static void ifam_read_mesg(struct ifa_msghdr *ifm, union sockunion *addr,
__func__, ifm->ifam_index,
(ifnlen ? ifname : "(nil)"),
rtatostr(ifm->ifam_addrs, fbuf, sizeof(fbuf)),
- ifm->ifam_flags, addr, masklen, brd, &dst,
+ ifm->ifam_flags, addr, masklen, brd, &dst,
&gateway);
} break;
default:
@@ -938,9 +938,10 @@ static int rtm_read_mesg(struct rt_msghdr *rtm, union sockunion *dest,
/* rt_msghdr version check. */
if (rtm->rtm_version != RTM_VERSION)
- flog_warn(EC_ZEBRA_RTM_VERSION_MISMATCH,
- "Routing message version different %d should be %d.This may cause problem",
- rtm->rtm_version, RTM_VERSION);
+ flog_warn(
+ EC_ZEBRA_RTM_VERSION_MISMATCH,
+ "Routing message version different %d should be %d.This may cause problem",
+ rtm->rtm_version, RTM_VERSION);
/* Be sure structure is cleared */
memset(dest, 0, sizeof(union sockunion));
diff --git a/zebra/zebra_dplane.c b/zebra/zebra_dplane.c
index ee99be5eb..deaefd690 100644
--- a/zebra/zebra_dplane.c
+++ b/zebra/zebra_dplane.c
@@ -4850,8 +4850,8 @@ static int dplane_incoming_read(struct thread *event)
kernel_dplane_read(&zi->info);
/* Re-start read task */
- thread_add_read(zdplane_info.dg_master, dplane_incoming_read,
- zi, zi->info.nls.sock, &zi->t_read);
+ thread_add_read(zdplane_info.dg_master, dplane_incoming_read, zi,
+ zi->info.nls.sock, &zi->t_read);
return 0;
}
@@ -4870,12 +4870,11 @@ void zebra_dplane_ns_enable(struct zebra_ns *zns, bool enabled)
struct dplane_zns_info *zi;
if (IS_ZEBRA_DEBUG_DPLANE)
- zlog_debug("%s: %s for nsid %u",
- __func__, (enabled ? "ENABLED" : "DISABLED"),
- zns->ns_id);
+ zlog_debug("%s: %s for nsid %u", __func__,
+ (enabled ? "ENABLED" : "DISABLED"), zns->ns_id);
/* Search for an existing zns info entry */
- frr_each(zns_info_list, &zdplane_info.dg_zns_list, zi) {
+ frr_each (zns_info_list, &zdplane_info.dg_zns_list, zi) {
if (zi->info.ns_id == zns->ns_id)
break;
}
@@ -4890,8 +4889,8 @@ void zebra_dplane_ns_enable(struct zebra_ns *zns, bool enabled)
zns_info_list_add_tail(&zdplane_info.dg_zns_list, zi);
if (IS_ZEBRA_DEBUG_DPLANE)
- zlog_debug("%s: nsid %u, new zi %p",
- __func__, zns->ns_id, zi);
+ zlog_debug("%s: nsid %u, new zi %p", __func__,
+ zns->ns_id, zi);
}
/* Make sure we're up-to-date with the zns object */
@@ -4907,15 +4906,15 @@ void zebra_dplane_ns_enable(struct zebra_ns *zns, bool enabled)
#endif
} else if (zi) {
if (IS_ZEBRA_DEBUG_DPLANE)
- zlog_debug("%s: nsid %u, deleting zi %p",
- __func__, zns->ns_id, zi);
+ zlog_debug("%s: nsid %u, deleting zi %p", __func__,
+ zns->ns_id, zi);
/* Stop reading, free memory */
zns_info_list_del(&zdplane_info.dg_zns_list, zi);
if (zdplane_info.dg_master)
- thread_cancel_async(zdplane_info.dg_master,
- &zi->t_read, NULL);
+ thread_cancel_async(zdplane_info.dg_master, &zi->t_read,
+ NULL);
XFREE(MTYPE_DP_NS, zi);
}
@@ -5091,8 +5090,8 @@ static void kernel_dplane_log_detail(struct zebra_dplane_ctx *ctx)
case DPLANE_OP_INTF_ADDR_DEL:
zlog_debug("Dplane incoming op %s, intf %s, addr %pFX",
dplane_op2str(dplane_ctx_get_op(ctx)),
- dplane_ctx_get_ifname(ctx),
- dplane_ctx_get_intf_addr(ctx));
+ dplane_ctx_get_ifname(ctx),
+ dplane_ctx_get_intf_addr(ctx));
break;
}
}
@@ -5582,7 +5581,7 @@ static int dplane_check_shutdown_status(struct thread *event)
zlog_debug("Zebra dataplane shutdown status check called");
/* Remove any zns info entries as we stop the dplane pthread. */
- frr_each_safe(zns_info_list, &zdplane_info.dg_zns_list, zi) {
+ frr_each_safe (zns_info_list, &zdplane_info.dg_zns_list, zi) {
zns_info_list_del(&zdplane_info.dg_zns_list, zi);
if (zdplane_info.dg_master)
@@ -5922,11 +5921,10 @@ void zebra_dplane_start(void)
&zdplane_info.dg_t_update);
/* Enqueue reads if necessary */
- frr_each(zns_info_list, &zdplane_info.dg_zns_list, zi) {
+ frr_each (zns_info_list, &zdplane_info.dg_zns_list, zi) {
#if defined(HAVE_NETLINK)
- thread_add_read(zdplane_info.dg_master,
- dplane_incoming_read, zi,
- zi->info.nls.sock, &zi->t_read);
+ thread_add_read(zdplane_info.dg_master, dplane_incoming_read,
+ zi, zi->info.nls.sock, &zi->t_read);
#endif
}
diff --git a/zebra/zebra_dplane.h b/zebra/zebra_dplane.h
index 6f70972d0..c51ada732 100644
--- a/zebra/zebra_dplane.h
+++ b/zebra/zebra_dplane.h
@@ -478,8 +478,7 @@ void dplane_ctx_set_intf_dest(struct zebra_dplane_ctx *ctx,
const struct prefix *p);
bool dplane_ctx_intf_has_label(const struct zebra_dplane_ctx *ctx);
const char *dplane_ctx_get_intf_label(const struct zebra_dplane_ctx *ctx);
-void dplane_ctx_set_intf_label(struct zebra_dplane_ctx *ctx,
- const char *label);
+void dplane_ctx_set_intf_label(struct zebra_dplane_ctx *ctx, const char *label);
/* Accessors for MAC information */
vlanid_t dplane_ctx_mac_get_vlan(const struct zebra_dplane_ctx *ctx);
If you are a new contributor to FRR, please see our contributing guidelines.
After making changes, you do not need to create a new PR. You should perform an amend or interactive rebase followed by a force push.
|
Fixed some more nsid problems |
Outdated results 💚Basic BGPD CI results: SUCCESS, 0 tests failed
For details, please contact louberger |
d3848d5 to
5005ccd
Compare
|
Pushed some polly cleanups |
Outdated results 💚Basic BGPD CI results: SUCCESS, 0 tests failed
For details, please contact louberger |
|
CI:rerun |
Continuous Integration Result: SUCCESSFULContinuous Integration Result: SUCCESSFULCongratulations, this patch passed basic tests Tested-by: NetDEF / OpenSourceRouting.org CI System CI System Testrun URL: https://ci1.netdef.org/browse/FRR-FRRPULLREQ-20354/ This is a comment from an automated CI system. |
|
Hi @mjstapp I see this PR is in Draft mode. Is it not ready for review then? I can take a look otherwise. Thanks |
|
Oh, just the opposite! I opened it as a draft in order to have discussion and review on the approach and changes. I wanted to make it clear that I would rather not "just merge" it, until there's some agreement that this pattern, this approach, is reasonable.
|
5005ccd to
073ff62
Compare
polychaeta
left a comment
There was a problem hiding this comment.
Thanks for your contribution to FRR!
Click for style suggestions
To apply these suggestions:
curl -s https://gist.githubusercontent.com/polychaeta/2b9829d69e94d1c7b54f4c299a1c6c07/raw/a24e430357f1a4492a5437daefc61c510561fd46/cr_9052_1628085487.diff | git apply
diff --git a/zebra/if_netlink.c b/zebra/if_netlink.c
index a7fdddc978..f29761b8a0 100644
--- a/zebra/if_netlink.c
+++ b/zebra/if_netlink.c
@@ -1490,11 +1490,11 @@ int netlink_interface_addr_dplane(struct nlmsghdr *h, ns_id_t ns_id,
len = h->nlmsg_len - NLMSG_LENGTH(sizeof(struct ifaddrmsg));
if (len < 0) {
if (IS_ZEBRA_DEBUG_KERNEL)
- zlog_debug("%s: %s: netlink msg bad size: %d %zu",
- __func__, nl_msg_type_to_str(h->nlmsg_type),
- h->nlmsg_len,
- (size_t)NLMSG_LENGTH(
- sizeof(struct ifaddrmsg)));
+ zlog_debug(
+ "%s: %s: netlink msg bad size: %d %zu",
+ __func__, nl_msg_type_to_str(h->nlmsg_type),
+ h->nlmsg_len,
+ (size_t)NLMSG_LENGTH(sizeof(struct ifaddrmsg)));
return -1;
}
@@ -1509,8 +1509,8 @@ int netlink_interface_addr_dplane(struct nlmsghdr *h, ns_id_t ns_id,
if (IS_ZEBRA_DEBUG_KERNEL) { /* remove this line to see initial ifcfg */
char buf[PREFIX_STRLEN];
- zlog_debug("%s: %s nsid %u ifindex %u flags 0x%x:",
- __func__, nl_msg_type_to_str(h->nlmsg_type), ns_id,
+ zlog_debug("%s: %s nsid %u ifindex %u flags 0x%x:", __func__,
+ nl_msg_type_to_str(h->nlmsg_type), ns_id,
ifa->ifa_index, kernel_flags);
if (tb[IFA_LOCAL])
zlog_debug(" IFA_LOCAL %s/%d",
@@ -1544,8 +1544,8 @@ int netlink_interface_addr_dplane(struct nlmsghdr *h, ns_id_t ns_id,
/* Validate prefix length */
- if (ifa->ifa_family == AF_INET &&
- ifa->ifa_prefixlen > IPV4_MAX_BITLEN) {
+ if (ifa->ifa_family == AF_INET
+ && ifa->ifa_prefixlen > IPV4_MAX_BITLEN) {
if (IS_ZEBRA_DEBUG_KERNEL)
zlog_debug("%s: %s: Invalid prefix length: %u",
__func__, nl_msg_type_to_str(h->nlmsg_type),
@@ -1567,8 +1567,8 @@ int netlink_interface_addr_dplane(struct nlmsghdr *h, ns_id_t ns_id,
* notification till IPv6 DAD has completed, but at init
* time, FRR does query for and will receive all addresses.
*/
- if (h->nlmsg_type == RTM_NEWADDR &&
- (kernel_flags & (IFA_F_DADFAILED | IFA_F_TENTATIVE))) {
+ if (h->nlmsg_type == RTM_NEWADDR
+ && (kernel_flags & (IFA_F_DADFAILED | IFA_F_TENTATIVE))) {
if (IS_ZEBRA_DEBUG_KERNEL)
zlog_debug("%s: %s: Invalid/tentative addr",
__func__,
@@ -1704,8 +1704,8 @@ int netlink_interface_addr_ctx(struct zebra_dplane_ctx *ctx)
addr = dplane_ctx_get_intf_addr(ctx);
if (IS_ZEBRA_DEBUG_KERNEL)
- zlog_debug("%s: %s: ifindex %u, addr %pFX",
- __func__, dplane_op2str(op), ifindex, addr);
+ zlog_debug("%s: %s: ifindex %u, addr %pFX", __func__,
+ dplane_op2str(op), ifindex, addr);
/* Is there a peer or broadcast address? */
dest = dplane_ctx_get_intf_dest(ctx);
@@ -1731,30 +1731,27 @@ int netlink_interface_addr_ctx(struct zebra_dplane_ctx *ctx)
/* Register interface address to the interface. */
if (addr->family == AF_INET) {
if (op == DPLANE_OP_INTF_ADDR_ADD)
- connected_add_ipv4(ifp, flags, &addr->u.prefix4,
- addr->prefixlen,
- dest ? &dest->u.prefix4 : NULL,
- label, metric);
+ connected_add_ipv4(
+ ifp, flags, &addr->u.prefix4, addr->prefixlen,
+ dest ? &dest->u.prefix4 : NULL, label, metric);
else if (CHECK_FLAG(flags, ZEBRA_IFA_PEER)) {
/* Delete with a peer address */
- connected_delete_ipv4(
- ifp, flags, &addr->u.prefix4,
- addr->prefixlen, &dest->u.prefix4);
+ connected_delete_ipv4(ifp, flags, &addr->u.prefix4,
+ addr->prefixlen,
+ &dest->u.prefix4);
} else
- connected_delete_ipv4(
- ifp, flags, &addr->u.prefix4,
- addr->prefixlen, NULL);
+ connected_delete_ipv4(ifp, flags, &addr->u.prefix4,
+ addr->prefixlen, NULL);
}
if (addr->family == AF_INET6) {
if (op == DPLANE_OP_INTF_ADDR_ADD) {
- connected_add_ipv6(ifp, flags,
- &addr->u.prefix6,
+ connected_add_ipv6(ifp, flags, &addr->u.prefix6,
dest ? &dest->u.prefix6 : NULL,
addr->prefixlen, label, metric);
} else
- connected_delete_ipv6(ifp, &addr->u.prefix6,
- NULL, addr->prefixlen);
+ connected_delete_ipv6(ifp, &addr->u.prefix6, NULL,
+ addr->prefixlen);
}
/*
diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c
index 9e4a2720a0..e085cbd850 100644
--- a/zebra/kernel_socket.c
+++ b/zebra/kernel_socket.c
@@ -816,7 +816,7 @@ static void ifam_read_mesg(struct ifa_msghdr *ifm, union sockunion *addr,
__func__, ifm->ifam_index,
(ifnlen ? ifname : "(nil)"),
rtatostr(ifm->ifam_addrs, fbuf, sizeof(fbuf)),
- ifm->ifam_flags, addr, masklen, brd, &dst,
+ ifm->ifam_flags, addr, masklen, brd, &dst,
&gateway);
} break;
default:
@@ -944,9 +944,10 @@ static int rtm_read_mesg(struct rt_msghdr *rtm, union sockunion *dest,
/* rt_msghdr version check. */
if (rtm->rtm_version != RTM_VERSION)
- flog_warn(EC_ZEBRA_RTM_VERSION_MISMATCH,
- "Routing message version different %d should be %d.This may cause problem",
- rtm->rtm_version, RTM_VERSION);
+ flog_warn(
+ EC_ZEBRA_RTM_VERSION_MISMATCH,
+ "Routing message version different %d should be %d.This may cause problem",
+ rtm->rtm_version, RTM_VERSION);
/* Be sure structure is cleared */
memset(dest, 0, sizeof(union sockunion));
diff --git a/zebra/zebra_dplane.c b/zebra/zebra_dplane.c
index c590602dfe..6f2e49376d 100644
--- a/zebra/zebra_dplane.c
+++ b/zebra/zebra_dplane.c
@@ -4882,12 +4882,11 @@ void zebra_dplane_ns_enable(struct zebra_ns *zns, bool enabled)
struct dplane_zns_info *zi;
if (IS_ZEBRA_DEBUG_DPLANE)
- zlog_debug("%s: %s for nsid %u",
- __func__, (enabled ? "ENABLED" : "DISABLED"),
- zns->ns_id);
+ zlog_debug("%s: %s for nsid %u", __func__,
+ (enabled ? "ENABLED" : "DISABLED"), zns->ns_id);
/* Search for an existing zns info entry */
- frr_each(zns_info_list, &zdplane_info.dg_zns_list, zi) {
+ frr_each (zns_info_list, &zdplane_info.dg_zns_list, zi) {
if (zi->info.ns_id == zns->ns_id)
break;
}
@@ -4902,8 +4901,8 @@ void zebra_dplane_ns_enable(struct zebra_ns *zns, bool enabled)
zns_info_list_add_tail(&zdplane_info.dg_zns_list, zi);
if (IS_ZEBRA_DEBUG_DPLANE)
- zlog_debug("%s: nsid %u, new zi %p",
- __func__, zns->ns_id, zi);
+ zlog_debug("%s: nsid %u, new zi %p", __func__,
+ zns->ns_id, zi);
}
/* Make sure we're up-to-date with the zns object */
@@ -4919,8 +4918,8 @@ void zebra_dplane_ns_enable(struct zebra_ns *zns, bool enabled)
#endif
} else if (zi) {
if (IS_ZEBRA_DEBUG_DPLANE)
- zlog_debug("%s: nsid %u, deleting zi %p",
- __func__, zns->ns_id, zi);
+ zlog_debug("%s: nsid %u, deleting zi %p", __func__,
+ zns->ns_id, zi);
/* Stop reading, free memory */
zns_info_list_del(&zdplane_info.dg_zns_list, zi);
@@ -5594,7 +5593,7 @@ static int dplane_check_shutdown_status(struct thread *event)
zlog_debug("Zebra dataplane shutdown status check called");
/* Remove any zns info entries as we stop the dplane pthread. */
- frr_each_safe(zns_info_list, &zdplane_info.dg_zns_list, zi) {
+ frr_each_safe (zns_info_list, &zdplane_info.dg_zns_list, zi) {
zns_info_list_del(&zdplane_info.dg_zns_list, zi);
if (zdplane_info.dg_master)
@@ -5934,7 +5933,7 @@ void zebra_dplane_start(void)
&zdplane_info.dg_t_update);
/* Enqueue reads if necessary */
- frr_each(zns_info_list, &zdplane_info.dg_zns_list, zi) {
+ frr_each (zns_info_list, &zdplane_info.dg_zns_list, zi) {
#if defined(HAVE_NETLINK)
thread_add_read(zdplane_info.dg_master, dplane_incoming_read,
zi, zi->info.nls.sock, &zi->t_read);
If you are a new contributor to FRR, please see our contributing guidelines.
After making changes, you do not need to create a new PR. You should perform an amend or interactive rebase followed by a force push.
|
Rebased, resolved conflict, removed 'draft' status |
Outdated results 💚Basic BGPD CI results: SUCCESS, 0 tests failed
For details, please contact louberger |
|
small nit of moving some functionality out of if_netlink.c but it can come later. |
|
@frrbot rereview |
|
Is your copy of |
073ff62 to
5adac28
Compare
|
Pushed some style fixes to make polly happier; rebased to newer master. |
Outdated results 💚Basic BGPD CI results: SUCCESS, 0 tests failed
For details, please contact louberger |
|
ci:rerun |
Continuous Integration Result: FAILEDContinuous Integration Result: FAILEDSee below for issues. This is a comment from an automated CI system. Get source / Pull Request: SuccessfulBuilding Stage: SuccessfulBasic Tests: FailedTopotests Ubuntu 18.04 amd64 part 7: Failed (click for details)Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO7U18AMD64-113/test Topology Tests failed for Topotests Ubuntu 18.04 amd64 part 7: see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-113/artifact/TOPO7U18AMD64/ErrorLog/log_topotests.txt Topotests debian 10 amd64 part 1: Failed (click for details)Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO1DEB10AMD64-113/test Topology Tests failed for Topotests debian 10 amd64 part 1: see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-113/artifact/TOPO1DEB10AMD64/ErrorLog/log_topotests.txt Topotests debian 10 amd64 part 7: Failed (click for details)Topotests debian 10 amd64 part 7: No useful log foundSuccessful on other platforms/tests
Warnings Generated during build:Checkout code: Successful with additional warningsTopotests Ubuntu 18.04 amd64 part 7: Failed (click for details)Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO7U18AMD64-113/test Topology Tests failed for Topotests Ubuntu 18.04 amd64 part 7: see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-113/artifact/TOPO7U18AMD64/ErrorLog/log_topotests.txt Topotests debian 10 amd64 part 1: Failed (click for details)Topology Test Results are at https://ci1.netdef.org/browse/FRR-PULLREQ2-TOPO1DEB10AMD64-113/test Topology Tests failed for Topotests debian 10 amd64 part 1: see full log at https://ci1.netdef.org/browse/FRR-PULLREQ2-113/artifact/TOPO1DEB10AMD64/ErrorLog/log_topotests.txt Topotests debian 10 amd64 part 7: Failed (click for details)Topotests debian 10 amd64 part 7: No useful log found |
Continuous Integration Result: SUCCESSFULContinuous Integration Result: SUCCESSFULCongratulations, this patch passed basic tests Tested-by: NetDEF / OpenSourceRouting.org CI System CI System Testrun URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-122/ This is a comment from an automated CI system. Warnings Generated during build:Checkout code: Successful with additional warnings |
Add a new netlink socket for events coming in from the host OS to the dataplane system for processing. Rename the existing outbound dplane socket. Signed-off-by: Mark Stapp <mjs.ietf@gmail.com>
Use more consistent int type. Signed-off-by: Mark Stapp <mjs.ietf@gmail.com>
Use const in ipX_martian apis, and in some zebra apis. Signed-off-by: Mark Stapp <mjs.ietf@gmail.com>
Use the frr format spec instead. Signed-off-by: Mark Stapp <mjs.ietf@gmail.com>
Add a few more setters for interface data in dplane contexts. Signed-off-by: Mark Stapp <mjs.ietf@gmail.com>
Add new dplane op values for incoming interface address add and delete events. Signed-off-by: Mark Stapp <mjs.ietf@gmail.com>
Add new apis for dplane interface address handling, based on the existing api. The existing api is basically split in two: the first part processes an incoming netlink message in the dplane pthread, creating a dplane context with info about the event. The second part runs in the main pthread and uses the context data to update an interface or connected object. Signed-off-by: Mark Stapp <mjs.ietf@gmail.com>
Read incoming interface address change notifications in the dplane pthread; enqueue the events to the main pthread for processing. This is netlink-only for now - the bsd kernel socket path remains unchanged. Signed-off-by: Mark Stapp <mjs.ietf@gmail.com>
Move the handler for incoming interface address events to a neutral source file - it's not netlink-specific and shouldn't have been in a netlink file. Signed-off-by: Mark Stapp <mjs.ietf@gmail.com>
5adac28 to
c6f55fb
Compare
|
rebase, move interface addr handler to platform-neutral file, fix a couple more style nits |
💚 Basic BGPD CI results: SUCCESS, 0 tests failedResults table
For details, please contact louberger |
Continuous Integration Result: FAILEDContinuous Integration Result: FAILEDSee below for issues. This is a comment from an automated CI system. Get source / Pull Request: SuccessfulBuilding Stage: SuccessfulBasic Tests: FailedTopotests debian 10 amd64 part 0: Failed (click for details)Topotests debian 10 amd64 part 0: No useful log foundSuccessful on other platforms/tests
Warnings Generated during build:Checkout code: Successful with additional warningsTopotests debian 10 amd64 part 0: Failed (click for details)Topotests debian 10 amd64 part 0: No useful log found |
|
CI:rerun |
|
failed a single timing test by 1/2 second, so have to rerun... |
Continuous Integration Result: FAILEDSee below for issues. This is a comment from an automated CI system. Get source / Pull Request: SuccessfulBuilding Stage: SuccessfulBasic Tests: FailedTopotests Ubuntu 18.04 amd64 part 7: Failed (click for details)Topotests Ubuntu 18.04 amd64 part 7: No useful log foundSuccessful on other platforms/tests
Warnings Generated during build:Checkout code: Successful with additional warningsTopotests Ubuntu 18.04 amd64 part 7: Failed (click for details)Topotests Ubuntu 18.04 amd64 part 7: No useful log found |
|
CI:rerun |
Continuous Integration Result: SUCCESSFULCongratulations, this patch passed basic tests Tested-by: NetDEF / OpenSourceRouting.org CI System CI System Testrun URL: https://ci1.netdef.org/browse/FRR-PULLREQ2-190/ This is a comment from an automated CI system. Warnings Generated during build:Checkout code: Successful with additional warnings |
Open a new netlink listener for use by the dataplane pthread. Process incoming interface address change messages in the dplane, create and enqueue a new type of dplane context object to the main pthread. The main pthread handles these contexts, and updates/maintains the internal zebra data structs. This is netlink-only for now. Part of the point of this PR is to introduce the sort of pattern that can be applied to many other types of incoming notifications (I think).