Skip to content

Commit

Permalink
Merge pull request #15188 from opensourcerouting/fix/revert_noprefixr…
Browse files Browse the repository at this point in the history
…oute_9.1

Revert noprefixroute stuff
  • Loading branch information
donaldsharp authored Jan 23, 2024
2 parents 1a5bb43 + 1c0dd8c commit b1107dc
Show file tree
Hide file tree
Showing 7 changed files with 12 additions and 66 deletions.
2 changes: 0 additions & 2 deletions lib/if.h
Original file line number Diff line number Diff line change
Expand Up @@ -420,8 +420,6 @@ struct connected {
#define ZEBRA_IFA_SECONDARY (1 << 0)
#define ZEBRA_IFA_PEER (1 << 1)
#define ZEBRA_IFA_UNNUMBERED (1 << 2)
#define ZEBRA_IFA_NOPREFIXROUTE (1 << 3)

/* N.B. the ZEBRA_IFA_PEER flag should be set if and only if
a peer address has been configured. If this flag is set,
the destination field must contain the peer address.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,23 +144,6 @@ def test_zebra_system_recursion():
assert result is None, "Kernel route is missing from zebra"


def test_zebra_noprefix_connected():
"Test that a noprefixroute created does not create a connected route"

tgen = get_topogen()
if tgen.routers_have_failure():
pytest.skip(tgen.errors)

router = tgen.gears["r1"]
router.run("ip addr add 192.168.44.1/24 dev r1-eth1 noprefixroute")
expected = "% Network not in table"
test_func = partial(
topotest.router_output_cmp, router, "show ip route 192.168.44.0/24", expected
)
result, diff = topotest.run_and_expect(test_func, "", count=20, wait=1)
assert result, "Connected Route should not have been added"


if __name__ == "__main__":
args = ["-s"] + sys.argv[1:]
sys.exit(pytest.main(args))
30 changes: 12 additions & 18 deletions zebra/connected.c
Original file line number Diff line number Diff line change
Expand Up @@ -276,15 +276,13 @@ void connected_up(struct interface *ifp, struct connected *ifc)
return;
}

if (!CHECK_FLAG(ifc->flags, ZEBRA_IFA_NOPREFIXROUTE)) {
rib_add(afi, SAFI_UNICAST, zvrf->vrf->vrf_id,
ZEBRA_ROUTE_CONNECT, 0, flags, &p, NULL, &nh, 0,
zvrf->table_id, metric, 0, 0, 0, false);

rib_add(afi, SAFI_MULTICAST, zvrf->vrf->vrf_id,
ZEBRA_ROUTE_CONNECT, 0, flags, &p, NULL, &nh, 0,
zvrf->table_id, metric, 0, 0, 0, false);
}
rib_add(afi, SAFI_UNICAST, zvrf->vrf->vrf_id, ZEBRA_ROUTE_CONNECT, 0,
flags, &p, NULL, &nh, 0, zvrf->table_id, metric, 0, 0, 0,
false);

rib_add(afi, SAFI_MULTICAST, zvrf->vrf->vrf_id, ZEBRA_ROUTE_CONNECT, 0,
flags, &p, NULL, &nh, 0, zvrf->table_id, metric, 0, 0, 0,
false);

/* Schedule LSP forwarding entries for processing, if appropriate. */
if (zvrf->vrf->vrf_id == VRF_DEFAULT) {
Expand Down Expand Up @@ -459,15 +457,11 @@ void connected_down(struct interface *ifp, struct connected *ifc)
* Same logic as for connected_up(): push the changes into the
* head.
*/
if (!CHECK_FLAG(ifc->flags, ZEBRA_IFA_NOPREFIXROUTE)) {
rib_delete(afi, SAFI_UNICAST, zvrf->vrf->vrf_id,
ZEBRA_ROUTE_CONNECT, 0, 0, &p, NULL, &nh, 0,
zvrf->table_id, 0, 0, false);

rib_delete(afi, SAFI_MULTICAST, zvrf->vrf->vrf_id,
ZEBRA_ROUTE_CONNECT, 0, 0, &p, NULL, &nh, 0,
zvrf->table_id, 0, 0, false);
}
rib_delete(afi, SAFI_UNICAST, zvrf->vrf->vrf_id, ZEBRA_ROUTE_CONNECT, 0,
0, &p, NULL, &nh, 0, zvrf->table_id, 0, 0, false);

rib_delete(afi, SAFI_MULTICAST, zvrf->vrf->vrf_id, ZEBRA_ROUTE_CONNECT,
0, 0, &p, NULL, &nh, 0, zvrf->table_id, 0, 0, false);

/* Schedule LSP forwarding entries for processing, if appropriate. */
if (zvrf->vrf->vrf_id == VRF_DEFAULT) {
Expand Down
3 changes: 0 additions & 3 deletions zebra/if_netlink.c
Original file line number Diff line number Diff line change
Expand Up @@ -1474,9 +1474,6 @@ int netlink_interface_addr_dplane(struct nlmsghdr *h, ns_id_t ns_id,
if (kernel_flags & IFA_F_SECONDARY)
dplane_ctx_intf_set_secondary(ctx);

if (kernel_flags & IFA_F_NOPREFIXROUTE)
dplane_ctx_intf_set_noprefixroute(ctx);

/* Label */
if (tb[IFA_LABEL]) {
label = (char *)RTA_DATA(tb[IFA_LABEL]);
Expand Down
9 changes: 0 additions & 9 deletions zebra/interface.c
Original file line number Diff line number Diff line change
Expand Up @@ -1331,9 +1331,6 @@ static void zebra_if_addr_update_ctx(struct zebra_dplane_ctx *ctx,
if (dplane_ctx_intf_is_secondary(ctx))
SET_FLAG(flags, ZEBRA_IFA_SECONDARY);

if (dplane_ctx_intf_is_noprefixroute(ctx))
SET_FLAG(flags, ZEBRA_IFA_NOPREFIXROUTE);

/* Label? */
if (dplane_ctx_intf_has_label(ctx))
label = dplane_ctx_get_intf_label(ctx);
Expand Down Expand Up @@ -2410,12 +2407,6 @@ static void connected_dump_vty(struct vty *vty, json_object *json,
else if (CHECK_FLAG(connected->flags, ZEBRA_IFA_SECONDARY))
vty_out(vty, " secondary");

if (json)
json_object_boolean_add(json_addr, "noPrefixRoute",
CHECK_FLAG(connected->flags, ZEBRA_IFA_NOPREFIXROUTE));
else if (CHECK_FLAG(connected->flags, ZEBRA_IFA_NOPREFIXROUTE))
vty_out(vty, " noprefixroute");

if (json)
json_object_boolean_add(
json_addr, "unnumbered",
Expand Down
15 changes: 0 additions & 15 deletions zebra/zebra_dplane.c
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,6 @@ struct dplane_intf_info {
#define DPLANE_INTF_BROADCAST (1 << 2)
#define DPLANE_INTF_HAS_DEST DPLANE_INTF_CONNECTED
#define DPLANE_INTF_HAS_LABEL (1 << 4)
#define DPLANE_INTF_NOPREFIXROUTE (1 << 5)

/* Interface address/prefix */
struct prefix prefix;
Expand Down Expand Up @@ -2542,13 +2541,6 @@ bool dplane_ctx_intf_is_connected(const struct zebra_dplane_ctx *ctx)
return (ctx->u.intf.flags & DPLANE_INTF_CONNECTED);
}

bool dplane_ctx_intf_is_noprefixroute(const struct zebra_dplane_ctx *ctx)
{
DPLANE_CTX_VALID(ctx);

return (ctx->u.intf.flags & DPLANE_INTF_NOPREFIXROUTE);
}

bool dplane_ctx_intf_is_secondary(const struct zebra_dplane_ctx *ctx)
{
DPLANE_CTX_VALID(ctx);
Expand Down Expand Up @@ -2577,13 +2569,6 @@ void dplane_ctx_intf_set_secondary(struct zebra_dplane_ctx *ctx)
ctx->u.intf.flags |= DPLANE_INTF_SECONDARY;
}

void dplane_ctx_intf_set_noprefixroute(struct zebra_dplane_ctx *ctx)
{
DPLANE_CTX_VALID(ctx);

ctx->u.intf.flags |= DPLANE_INTF_NOPREFIXROUTE;
}

void dplane_ctx_intf_set_broadcast(struct zebra_dplane_ctx *ctx)
{
DPLANE_CTX_VALID(ctx);
Expand Down
2 changes: 0 additions & 2 deletions zebra/zebra_dplane.h
Original file line number Diff line number Diff line change
Expand Up @@ -658,8 +658,6 @@ bool dplane_ctx_intf_is_connected(const struct zebra_dplane_ctx *ctx);
void dplane_ctx_intf_set_connected(struct zebra_dplane_ctx *ctx);
bool dplane_ctx_intf_is_secondary(const struct zebra_dplane_ctx *ctx);
void dplane_ctx_intf_set_secondary(struct zebra_dplane_ctx *ctx);
bool dplane_ctx_intf_is_noprefixroute(const struct zebra_dplane_ctx *ctx);
void dplane_ctx_intf_set_noprefixroute(struct zebra_dplane_ctx *ctx);
bool dplane_ctx_intf_is_broadcast(const struct zebra_dplane_ctx *ctx);
void dplane_ctx_intf_set_broadcast(struct zebra_dplane_ctx *ctx);
const struct prefix *dplane_ctx_get_intf_addr(
Expand Down

0 comments on commit b1107dc

Please sign in to comment.