summaryrefslogtreecommitdiff
path: root/pbrd/pbr_zebra.c
diff options
context:
space:
mode:
authorRenato Westphal <renato@opensourcerouting.org>2019-03-02 15:00:46 -0300
committerRenato Westphal <renatowestphal@gmail.com>2019-03-29 11:32:21 -0300
commit8f88441d717c0ded412543cceabf0ddd93ee9f09 (patch)
tree0a460d2da46a5b910535529c92e8db2fa5ff2a74 /pbrd/pbr_zebra.c
parent6a534dcafcb623f1b85b5ee2a13c74faab227ced (diff)
parent700e9faa28bbdc3460e1d7aa109b6e4acaf347b3 (diff)
Merge remote-tracking branch 'frr/master' into rip-vrf
Merge commit to solve a bunch of conflicts with other PRs that were merged in the previous weeks. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
Diffstat (limited to 'pbrd/pbr_zebra.c')
-rw-r--r--pbrd/pbr_zebra.c62
1 files changed, 51 insertions, 11 deletions
diff --git a/pbrd/pbr_zebra.c b/pbrd/pbr_zebra.c
index 7974bbfb4e..558e635748 100644
--- a/pbrd/pbr_zebra.c
+++ b/pbrd/pbr_zebra.c
@@ -69,6 +69,9 @@ static int interface_add(int command, struct zclient *zclient,
if (!ifp)
return 0;
+ DEBUGD(&pbr_dbg_zebra,
+ "%s: %s", __PRETTY_FUNCTION__, ifp->name);
+
if (!ifp->info)
pbr_if_new(ifp);
@@ -89,6 +92,9 @@ static int interface_delete(int command, struct zclient *zclient,
if (ifp == NULL)
return 0;
+ DEBUGD(&pbr_dbg_zebra,
+ "%s: %s", __PRETTY_FUNCTION__, ifp->name);
+
if_set_index(ifp, IFINDEX_INTERNAL);
return 0;
@@ -97,7 +103,14 @@ static int interface_delete(int command, struct zclient *zclient,
static int interface_address_add(int command, struct zclient *zclient,
zebra_size_t length, vrf_id_t vrf_id)
{
- zebra_interface_address_read(command, zclient->ibuf, vrf_id);
+ struct connected *c;
+ char buf[PREFIX_STRLEN];
+
+ c = zebra_interface_address_read(command, zclient->ibuf, vrf_id);
+
+ DEBUGD(&pbr_dbg_zebra,
+ "%s: %s added %s", __PRETTY_FUNCTION__, c->ifp->name,
+ prefix2str(c->address, buf, sizeof(buf)));
return 0;
}
@@ -106,12 +119,17 @@ static int interface_address_delete(int command, struct zclient *zclient,
zebra_size_t length, vrf_id_t vrf_id)
{
struct connected *c;
+ char buf[PREFIX_STRLEN];
c = zebra_interface_address_read(command, zclient->ibuf, vrf_id);
if (!c)
return 0;
+ DEBUGD(&pbr_dbg_zebra,
+ "%s: %s deleted %s", __PRETTY_FUNCTION__, c->ifp->name,
+ prefix2str(c->address, buf, sizeof(buf)));
+
connected_free(c);
return 0;
}
@@ -119,8 +137,12 @@ static int interface_address_delete(int command, struct zclient *zclient,
static int interface_state_up(int command, struct zclient *zclient,
zebra_size_t length, vrf_id_t vrf_id)
{
+ struct interface *ifp;
- zebra_interface_state_read(zclient->ibuf, vrf_id);
+ ifp = zebra_interface_state_read(zclient->ibuf, vrf_id);
+
+ DEBUGD(&pbr_dbg_zebra,
+ "%s: %s is up", __PRETTY_FUNCTION__, ifp->name);
return 0;
}
@@ -128,8 +150,12 @@ static int interface_state_up(int command, struct zclient *zclient,
static int interface_state_down(int command, struct zclient *zclient,
zebra_size_t length, vrf_id_t vrf_id)
{
+ struct interface *ifp;
+
+ ifp = zebra_interface_state_read(zclient->ibuf, vrf_id);
- zebra_interface_state_read(zclient->ibuf, vrf_id);
+ DEBUGD(&pbr_dbg_zebra,
+ "%s: %s is down", __PRETTY_FUNCTION__, ifp->name);
return 0;
}
@@ -142,11 +168,11 @@ static int route_notify_owner(int command, struct zclient *zclient,
uint32_t table_id;
char buf[PREFIX_STRLEN];
- prefix2str(&p, buf, sizeof(buf));
-
if (!zapi_route_notify_decode(zclient->ibuf, &p, &table_id, &note))
return -1;
+ prefix2str(&p, buf, sizeof(buf));
+
switch (note) {
case ZAPI_ROUTE_FAIL_INSTALL:
DEBUGD(&pbr_dbg_zebra,
@@ -207,28 +233,32 @@ static int rule_notify_owner(int command, struct zclient *zclient,
switch (note) {
case ZAPI_RULE_FAIL_INSTALL:
- DEBUGD(&pbr_dbg_zebra, "%s: Received RULE_FAIL_INSTALL",
- __PRETTY_FUNCTION__);
pbrms->installed &= ~installed;
+ DEBUGD(&pbr_dbg_zebra, "%s: Received RULE_FAIL_INSTALL: %lu",
+ __PRETTY_FUNCTION__, pbrms->installed);
break;
case ZAPI_RULE_INSTALLED:
pbrms->installed |= installed;
- DEBUGD(&pbr_dbg_zebra, "%s: Received RULE_INSTALLED",
- __PRETTY_FUNCTION__);
+ DEBUGD(&pbr_dbg_zebra, "%s: Received RULE_INSTALLED: %lu",
+ __PRETTY_FUNCTION__, pbrms->installed);
break;
case ZAPI_RULE_FAIL_REMOVE:
case ZAPI_RULE_REMOVED:
pbrms->installed &= ~installed;
- DEBUGD(&pbr_dbg_zebra, "%s: Received RULE REMOVED",
- __PRETTY_FUNCTION__);
+ DEBUGD(&pbr_dbg_zebra, "%s: Received RULE REMOVED: %lu",
+ __PRETTY_FUNCTION__, pbrms->installed);
break;
}
+ pbr_map_final_interface_deletion(pbrms->parent, pmi);
+
return 0;
}
static void zebra_connected(struct zclient *zclient)
{
+ DEBUGD(&pbr_dbg_zebra, "%s: Registering for fun and profit",
+ __PRETTY_FUNCTION__);
zclient_send_reg_requests(zclient, VRF_DEFAULT);
}
@@ -236,11 +266,15 @@ static void route_add_helper(struct zapi_route *api, struct nexthop_group nhg,
uint8_t install_afi)
{
struct zapi_nexthop *api_nh;
+ char buf[PREFIX_STRLEN];
struct nexthop *nhop;
int i;
api->prefix.family = install_afi;
+ DEBUGD(&pbr_dbg_zebra, "\tEncoding %s",
+ prefix2str(&api->prefix, buf, sizeof(buf)));
+
i = 0;
for (ALL_NEXTHOPS(nhg, nhop)) {
api_nh = &api->nexthops[i];
@@ -284,6 +318,9 @@ void route_add(struct pbr_nexthop_group_cache *pnhgc, struct nexthop_group nhg,
{
struct zapi_route api;
+ DEBUGD(&pbr_dbg_zebra, "%s for Table: %d", __PRETTY_FUNCTION__,
+ pnhgc->table_id);
+
memset(&api, 0, sizeof(api));
api.vrf_id = VRF_DEFAULT;
@@ -323,6 +360,9 @@ void route_delete(struct pbr_nexthop_group_cache *pnhgc, afi_t afi)
{
struct zapi_route api;
+ DEBUGD(&pbr_dbg_zebra, "%s for Table: %d", __PRETTY_FUNCTION__,
+ pnhgc->table_id);
+
memset(&api, 0, sizeof(api));
api.vrf_id = VRF_DEFAULT;
api.type = ZEBRA_ROUTE_PBR;