forked from Mirror/frr
ripngd: adapt to new YANG NB if_rmap conversion
- uses YANG grouping and calls if_rmap library code to implement. Signed-off-by: Christian Hopps <chopps@labn.net>
This commit is contained in:
parent
14ef7be7ca
commit
e40c42081d
|
@ -114,6 +114,27 @@ const struct frr_yang_module_info frr_ripngd_info = {
|
|||
.modify = ripngd_instance_redistribute_metric_modify,
|
||||
},
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-ripngd:ripngd/instance/if-route-maps/if-route-map",
|
||||
.cbs = {
|
||||
.create = ripngd_instance_if_route_maps_if_route_map_create,
|
||||
.destroy = ripngd_instance_if_route_maps_if_route_map_destroy,
|
||||
}
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-ripngd:ripngd/instance/if-route-maps/if-route-map/in-route-map",
|
||||
.cbs = {
|
||||
.modify = ripngd_instance_if_route_maps_if_route_map_in_route_map_modify,
|
||||
.destroy = ripngd_instance_if_route_maps_if_route_map_in_route_map_destroy,
|
||||
}
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-ripngd:ripngd/instance/if-route-maps/if-route-map/out-route-map",
|
||||
.cbs = {
|
||||
.modify = ripngd_instance_if_route_maps_if_route_map_out_route_map_modify,
|
||||
.destroy = ripngd_instance_if_route_maps_if_route_map_out_route_map_destroy,
|
||||
}
|
||||
},
|
||||
{
|
||||
.xpath = "/frr-ripngd:ripngd/instance/static-route",
|
||||
.cbs = {
|
||||
|
|
|
@ -39,6 +39,18 @@ int ripngd_instance_redistribute_route_map_destroy(
|
|||
int ripngd_instance_redistribute_metric_modify(struct nb_cb_modify_args *args);
|
||||
int ripngd_instance_redistribute_metric_destroy(
|
||||
struct nb_cb_destroy_args *args);
|
||||
int ripngd_instance_if_route_maps_if_route_map_create(
|
||||
struct nb_cb_create_args *args);
|
||||
int ripngd_instance_if_route_maps_if_route_map_destroy(
|
||||
struct nb_cb_destroy_args *args);
|
||||
int ripngd_instance_if_route_maps_if_route_map_in_route_map_modify(
|
||||
struct nb_cb_modify_args *args);
|
||||
int ripngd_instance_if_route_maps_if_route_map_in_route_map_destroy(
|
||||
struct nb_cb_destroy_args *args);
|
||||
int ripngd_instance_if_route_maps_if_route_map_out_route_map_modify(
|
||||
struct nb_cb_modify_args *args);
|
||||
int ripngd_instance_if_route_maps_if_route_map_out_route_map_destroy(
|
||||
struct nb_cb_destroy_args *args);
|
||||
int ripngd_instance_static_route_create(struct nb_cb_create_args *args);
|
||||
int ripngd_instance_static_route_destroy(struct nb_cb_destroy_args *args);
|
||||
int ripngd_instance_aggregate_address_create(struct nb_cb_create_args *args);
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
* Copyright (C) 1998 Kunihiro Ishiguro
|
||||
* Copyright (C) 2018 NetDEF, Inc.
|
||||
* Renato Westphal
|
||||
* Copyright (C) 2023 LabN Consulting, L.L.C.
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
@ -13,6 +14,7 @@
|
|||
#include "prefix.h"
|
||||
#include "table.h"
|
||||
#include "command.h"
|
||||
#include "if_rmap.h"
|
||||
#include "routemap.h"
|
||||
#include "agg_table.h"
|
||||
#include "northbound.h"
|
||||
|
@ -502,6 +504,93 @@ int ripngd_instance_redistribute_metric_destroy(struct nb_cb_destroy_args *args)
|
|||
return NB_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-ripngd:ripngd/instance/if-route-maps/if-route-map
|
||||
*/
|
||||
int ripngd_instance_if_route_maps_if_route_map_create(
|
||||
struct nb_cb_create_args *args)
|
||||
{
|
||||
/* if_rmap is created when first routemap is added */
|
||||
return NB_OK;
|
||||
}
|
||||
|
||||
int ripngd_instance_if_route_maps_if_route_map_destroy(
|
||||
struct nb_cb_destroy_args *args)
|
||||
{
|
||||
struct ripng *ripng;
|
||||
|
||||
if (args->event != NB_EV_APPLY)
|
||||
return NB_OK;
|
||||
|
||||
/*
|
||||
* YANG will prune edit deletes up to the most general deleted node so
|
||||
* we need to handle deleting any existing state underneath and not
|
||||
* count on those more specific callbacks being called individually.
|
||||
*/
|
||||
|
||||
ripng = nb_running_get_entry(args->dnode, NULL, true);
|
||||
if_rmap_yang_destroy_cb(ripng->if_rmap_ctx, args->dnode);
|
||||
|
||||
return NB_OK;
|
||||
}
|
||||
|
||||
static void if_route_map_modify(const struct lyd_node *dnode,
|
||||
enum if_rmap_type type, bool delete)
|
||||
{
|
||||
struct ripng *ripng = nb_running_get_entry(dnode, NULL, true);
|
||||
|
||||
if_rmap_yang_modify_cb(ripng->if_rmap_ctx, dnode, type, delete);
|
||||
}
|
||||
/*
|
||||
* XPath: /frr-ripng:ripng/instance/if-route-maps/if-route-map/in-route-map
|
||||
*/
|
||||
int ripngd_instance_if_route_maps_if_route_map_in_route_map_modify(
|
||||
struct nb_cb_modify_args *args)
|
||||
{
|
||||
if (args->event != NB_EV_APPLY)
|
||||
return NB_OK;
|
||||
|
||||
if_route_map_modify(args->dnode, IF_RMAP_IN, false);
|
||||
|
||||
return NB_OK;
|
||||
}
|
||||
|
||||
int ripngd_instance_if_route_maps_if_route_map_in_route_map_destroy(
|
||||
struct nb_cb_destroy_args *args)
|
||||
{
|
||||
if (args->event != NB_EV_APPLY)
|
||||
return NB_OK;
|
||||
|
||||
if_route_map_modify(args->dnode, IF_RMAP_IN, true);
|
||||
|
||||
return NB_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-ripngd:ripngd/instance/if-route-maps/if-route-map/out-route-map
|
||||
*/
|
||||
int ripngd_instance_if_route_maps_if_route_map_out_route_map_modify(
|
||||
struct nb_cb_modify_args *args)
|
||||
{
|
||||
if (args->event != NB_EV_APPLY)
|
||||
return NB_OK;
|
||||
|
||||
if_route_map_modify(args->dnode, IF_RMAP_OUT, false);
|
||||
|
||||
return NB_OK;
|
||||
}
|
||||
|
||||
int ripngd_instance_if_route_maps_if_route_map_out_route_map_destroy(
|
||||
struct nb_cb_destroy_args *args)
|
||||
{
|
||||
if (args->event != NB_EV_APPLY)
|
||||
return NB_OK;
|
||||
|
||||
if_route_map_modify(args->dnode, IF_RMAP_OUT, true);
|
||||
|
||||
return NB_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* XPath: /frr-ripngd:ripngd/instance/static-route
|
||||
*/
|
||||
|
|
|
@ -10,6 +10,9 @@ module frr-ripngd {
|
|||
import ietf-yang-types {
|
||||
prefix yang;
|
||||
}
|
||||
import frr-if-rmap {
|
||||
prefix frr-if-rmap;
|
||||
}
|
||||
import frr-interface {
|
||||
prefix frr-interface;
|
||||
}
|
||||
|
@ -196,6 +199,9 @@ module frr-ripngd {
|
|||
is 0.";
|
||||
}
|
||||
}
|
||||
|
||||
uses frr-if-rmap:if-route-maps-group;
|
||||
|
||||
leaf-list static-route {
|
||||
type inet:ipv6-prefix;
|
||||
description
|
||||
|
|
Loading…
Reference in a new issue