diff options
Diffstat (limited to 'lib/if.c')
| -rw-r--r-- | lib/if.c | 121 |
1 files changed, 56 insertions, 65 deletions
@@ -1489,19 +1489,17 @@ void if_zapi_callbacks(int (*create)(struct interface *ifp), /* * XPath: /frr-interface:lib/interface */ -static int lib_interface_create(enum nb_event event, - const struct lyd_node *dnode, - union nb_resource *resource) +static int lib_interface_create(struct nb_cb_create_args *args) { const char *ifname; const char *vrfname; struct vrf *vrf; struct interface *ifp; - ifname = yang_dnode_get_string(dnode, "./name"); - vrfname = yang_dnode_get_string(dnode, "./vrf"); + ifname = yang_dnode_get_string(args->dnode, "./name"); + vrfname = yang_dnode_get_string(args->dnode, "./vrf"); - switch (event) { + switch (args->event) { case NB_EV_VALIDATE: vrf = vrf_lookup_by_name(vrfname); if (!vrf) { @@ -1542,22 +1540,21 @@ static int lib_interface_create(enum nb_event event, #endif /* SUNOS_5 */ ifp->configured = true; - nb_running_set_entry(dnode, ifp); + nb_running_set_entry(args->dnode, ifp); break; } return NB_OK; } -static int lib_interface_destroy(enum nb_event event, - const struct lyd_node *dnode) +static int lib_interface_destroy(struct nb_cb_destroy_args *args) { struct interface *ifp; - switch (event) { + switch (args->event) { case NB_EV_VALIDATE: - ifp = nb_running_get_entry(dnode, NULL, true); + ifp = nb_running_get_entry(args->dnode, NULL, true); if (CHECK_FLAG(ifp->status, ZEBRA_INTERFACE_ACTIVE)) { zlog_warn("%s: only inactive interfaces can be deleted", __func__); @@ -1568,7 +1565,7 @@ static int lib_interface_destroy(enum nb_event event, case NB_EV_ABORT: break; case NB_EV_APPLY: - ifp = nb_running_unset_entry(dnode); + ifp = nb_running_unset_entry(args->dnode); ifp->configured = false; if_delete(&ifp); @@ -1581,13 +1578,12 @@ static int lib_interface_destroy(enum nb_event event, /* * XPath: /frr-interface:lib/interface */ -static const void *lib_interface_get_next(const void *parent_list_entry, - const void *list_entry) +static const void *lib_interface_get_next(struct nb_cb_get_next_args *args) { struct vrf *vrf; - struct interface *pif = (struct interface *)list_entry; + struct interface *pif = (struct interface *)args->list_entry; - if (list_entry == NULL) { + if (args->list_entry == NULL) { vrf = RB_MIN(vrf_name_head, &vrfs_by_name); assert(vrf); pif = RB_MIN(if_name_head, &vrf->ifaces_by_name); @@ -1606,27 +1602,26 @@ static const void *lib_interface_get_next(const void *parent_list_entry, return pif; } -static int lib_interface_get_keys(const void *list_entry, - struct yang_list_keys *keys) +static int lib_interface_get_keys(struct nb_cb_get_keys_args *args) { - const struct interface *ifp = list_entry; + const struct interface *ifp = args->list_entry; struct vrf *vrf = vrf_lookup_by_id(ifp->vrf_id); assert(vrf); - keys->num = 2; - strlcpy(keys->key[0], ifp->name, sizeof(keys->key[0])); - strlcpy(keys->key[1], vrf->name, sizeof(keys->key[1])); + args->keys->num = 2; + strlcpy(args->keys->key[0], ifp->name, sizeof(args->keys->key[0])); + strlcpy(args->keys->key[1], vrf->name, sizeof(args->keys->key[1])); return NB_OK; } -static const void *lib_interface_lookup_entry(const void *parent_list_entry, - const struct yang_list_keys *keys) +static const void * +lib_interface_lookup_entry(struct nb_cb_lookup_entry_args *args) { - const char *ifname = keys->key[0]; - const char *vrfname = keys->key[1]; + const char *ifname = args->keys->key[0]; + const char *vrfname = args->keys->key[1]; struct vrf *vrf = vrf_lookup_by_name(vrfname); return vrf ? if_lookup_by_name(ifname, vrf->vrf_id) : NULL; @@ -1635,33 +1630,30 @@ static const void *lib_interface_lookup_entry(const void *parent_list_entry, /* * XPath: /frr-interface:lib/interface/description */ -static int lib_interface_description_modify(enum nb_event event, - const struct lyd_node *dnode, - union nb_resource *resource) +static int lib_interface_description_modify(struct nb_cb_modify_args *args) { struct interface *ifp; const char *description; - if (event != NB_EV_APPLY) + if (args->event != NB_EV_APPLY) return NB_OK; - ifp = nb_running_get_entry(dnode, NULL, true); + ifp = nb_running_get_entry(args->dnode, NULL, true); XFREE(MTYPE_TMP, ifp->desc); - description = yang_dnode_get_string(dnode, NULL); + description = yang_dnode_get_string(args->dnode, NULL); ifp->desc = XSTRDUP(MTYPE_TMP, description); return NB_OK; } -static int lib_interface_description_destroy(enum nb_event event, - const struct lyd_node *dnode) +static int lib_interface_description_destroy(struct nb_cb_destroy_args *args) { struct interface *ifp; - if (event != NB_EV_APPLY) + if (args->event != NB_EV_APPLY) return NB_OK; - ifp = nb_running_get_entry(dnode, NULL, true); + ifp = nb_running_get_entry(args->dnode, NULL, true); XFREE(MTYPE_TMP, ifp->desc); return NB_OK; @@ -1670,63 +1662,63 @@ static int lib_interface_description_destroy(enum nb_event event, /* * XPath: /frr-interface:lib/interface/state/if-index */ -struct yang_data *lib_interface_state_if_index_get_elem(const char *xpath, - const void *list_entry) +static struct yang_data * +lib_interface_state_if_index_get_elem(struct nb_cb_get_elem_args *args) { - const struct interface *ifp = list_entry; + const struct interface *ifp = args->list_entry; - return yang_data_new_int32(xpath, ifp->ifindex); + return yang_data_new_int32(args->xpath, ifp->ifindex); } /* * XPath: /frr-interface:lib/interface/state/mtu */ -struct yang_data *lib_interface_state_mtu_get_elem(const char *xpath, - const void *list_entry) +static struct yang_data * +lib_interface_state_mtu_get_elem(struct nb_cb_get_elem_args *args) { - const struct interface *ifp = list_entry; + const struct interface *ifp = args->list_entry; - return yang_data_new_uint16(xpath, ifp->mtu); + return yang_data_new_uint16(args->xpath, ifp->mtu); } /* * XPath: /frr-interface:lib/interface/state/mtu6 */ -struct yang_data *lib_interface_state_mtu6_get_elem(const char *xpath, - const void *list_entry) +static struct yang_data * +lib_interface_state_mtu6_get_elem(struct nb_cb_get_elem_args *args) { - const struct interface *ifp = list_entry; + const struct interface *ifp = args->list_entry; - return yang_data_new_uint32(xpath, ifp->mtu6); + return yang_data_new_uint32(args->xpath, ifp->mtu6); } /* * XPath: /frr-interface:lib/interface/state/speed */ -struct yang_data *lib_interface_state_speed_get_elem(const char *xpath, - const void *list_entry) +static struct yang_data * +lib_interface_state_speed_get_elem(struct nb_cb_get_elem_args *args) { - const struct interface *ifp = list_entry; + const struct interface *ifp = args->list_entry; - return yang_data_new_uint32(xpath, ifp->speed); + return yang_data_new_uint32(args->xpath, ifp->speed); } /* * XPath: /frr-interface:lib/interface/state/metric */ -struct yang_data *lib_interface_state_metric_get_elem(const char *xpath, - const void *list_entry) +static struct yang_data * +lib_interface_state_metric_get_elem(struct nb_cb_get_elem_args *args) { - const struct interface *ifp = list_entry; + const struct interface *ifp = args->list_entry; - return yang_data_new_uint32(xpath, ifp->metric); + return yang_data_new_uint32(args->xpath, ifp->metric); } /* * XPath: /frr-interface:lib/interface/state/flags */ -struct yang_data *lib_interface_state_flags_get_elem(const char *xpath, - const void *list_entry) +static struct yang_data * +lib_interface_state_flags_get_elem(struct nb_cb_get_elem_args *args) { /* TODO: implement me. */ return NULL; @@ -1735,8 +1727,8 @@ struct yang_data *lib_interface_state_flags_get_elem(const char *xpath, /* * XPath: /frr-interface:lib/interface/state/type */ -struct yang_data *lib_interface_state_type_get_elem(const char *xpath, - const void *list_entry) +static struct yang_data * +lib_interface_state_type_get_elem(struct nb_cb_get_elem_args *args) { /* TODO: implement me. */ return NULL; @@ -1745,16 +1737,15 @@ struct yang_data *lib_interface_state_type_get_elem(const char *xpath, /* * XPath: /frr-interface:lib/interface/state/phy-address */ -struct yang_data * -lib_interface_state_phy_address_get_elem(const char *xpath, - const void *list_entry) +static struct yang_data * +lib_interface_state_phy_address_get_elem(struct nb_cb_get_elem_args *args) { - const struct interface *ifp = list_entry; + const struct interface *ifp = args->list_entry; struct ethaddr macaddr; memcpy(&macaddr.octet, ifp->hw_addr, ETH_ALEN); - return yang_data_new_mac(xpath, &macaddr); + return yang_data_new_mac(args->xpath, &macaddr); } /* clang-format off */ |
