diff options
| author | Donald Sharp <donaldsharp72@gmail.com> | 2021-10-25 07:55:39 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-10-25 07:55:39 -0400 |
| commit | 6f354338f98c173dc9cdc9165c03acdf5fc5685e (patch) | |
| tree | f5c12250c4adce7667eb7ce3ddee9070e3013133 /lib | |
| parent | b793d3ce7103c10335047df83dd3cb68a376bff1 (diff) | |
| parent | 2560505196b924f5c447f6c1d493ed9b74a13108 (diff) | |
Merge pull request #9824 from idryzhov/nb-cli-const-lyd-node
lib: northbound cli show/cmd functions must not modify data nodes
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/filter.h | 16 | ||||
| -rw-r--r-- | lib/filter_cli.c | 14 | ||||
| -rw-r--r-- | lib/if.c | 12 | ||||
| -rw-r--r-- | lib/northbound.h | 7 | ||||
| -rw-r--r-- | lib/northbound_cli.c | 8 | ||||
| -rw-r--r-- | lib/northbound_cli.h | 3 | ||||
| -rw-r--r-- | lib/routemap.h | 23 | ||||
| -rw-r--r-- | lib/routemap_cli.c | 25 |
8 files changed, 62 insertions, 46 deletions
diff --git a/lib/filter.h b/lib/filter.h index d1956ec019..b378288c58 100644 --- a/lib/filter.h +++ b/lib/filter.h @@ -234,15 +234,19 @@ bool plist_is_dup(const struct lyd_node *dnode, struct plist_dup_args *pda); struct lyd_node; struct vty; -extern int access_list_cmp(struct lyd_node *dnode1, struct lyd_node *dnode2); -extern void access_list_show(struct vty *vty, struct lyd_node *dnode, +extern int access_list_cmp(const struct lyd_node *dnode1, + const struct lyd_node *dnode2); +extern void access_list_show(struct vty *vty, const struct lyd_node *dnode, bool show_defaults); -extern void access_list_remark_show(struct vty *vty, struct lyd_node *dnode, +extern void access_list_remark_show(struct vty *vty, + const struct lyd_node *dnode, bool show_defaults); -extern int prefix_list_cmp(struct lyd_node *dnode1, struct lyd_node *dnode2); -extern void prefix_list_show(struct vty *vty, struct lyd_node *dnode, +extern int prefix_list_cmp(const struct lyd_node *dnode1, + const struct lyd_node *dnode2); +extern void prefix_list_show(struct vty *vty, const struct lyd_node *dnode, bool show_defaults); -extern void prefix_list_remark_show(struct vty *vty, struct lyd_node *dnode, +extern void prefix_list_remark_show(struct vty *vty, + const struct lyd_node *dnode, bool show_defaults); void filter_cli_init(void); diff --git a/lib/filter_cli.c b/lib/filter_cli.c index e424fcf878..43618094ac 100644 --- a/lib/filter_cli.c +++ b/lib/filter_cli.c @@ -1012,7 +1012,8 @@ ALIAS( ACCESS_LIST_REMARK_STR ACCESS_LIST_REMARK_LINE_STR) -int access_list_cmp(struct lyd_node *dnode1, struct lyd_node *dnode2) +int access_list_cmp(const struct lyd_node *dnode1, + const struct lyd_node *dnode2) { uint32_t seq1 = yang_dnode_get_uint32(dnode1, "./sequence"); uint32_t seq2 = yang_dnode_get_uint32(dnode2, "./sequence"); @@ -1020,7 +1021,7 @@ int access_list_cmp(struct lyd_node *dnode1, struct lyd_node *dnode2) return seq1 - seq2; } -void access_list_show(struct vty *vty, struct lyd_node *dnode, +void access_list_show(struct vty *vty, const struct lyd_node *dnode, bool show_defaults) { int type = yang_dnode_get_enum(dnode, "../type"); @@ -1134,7 +1135,7 @@ void access_list_show(struct vty *vty, struct lyd_node *dnode, vty_out(vty, "\n"); } -void access_list_remark_show(struct vty *vty, struct lyd_node *dnode, +void access_list_remark_show(struct vty *vty, const struct lyd_node *dnode, bool show_defaults) { int type = yang_dnode_get_enum(dnode, "../type"); @@ -1655,7 +1656,8 @@ ALIAS( ACCESS_LIST_REMARK_STR ACCESS_LIST_REMARK_LINE_STR) -int prefix_list_cmp(struct lyd_node *dnode1, struct lyd_node *dnode2) +int prefix_list_cmp(const struct lyd_node *dnode1, + const struct lyd_node *dnode2) { uint32_t seq1 = yang_dnode_get_uint32(dnode1, "./sequence"); uint32_t seq2 = yang_dnode_get_uint32(dnode2, "./sequence"); @@ -1663,7 +1665,7 @@ int prefix_list_cmp(struct lyd_node *dnode1, struct lyd_node *dnode2) return seq1 - seq2; } -void prefix_list_show(struct vty *vty, struct lyd_node *dnode, +void prefix_list_show(struct vty *vty, const struct lyd_node *dnode, bool show_defaults) { int type = yang_dnode_get_enum(dnode, "../type"); @@ -1722,7 +1724,7 @@ void prefix_list_show(struct vty *vty, struct lyd_node *dnode, vty_out(vty, "\n"); } -void prefix_list_remark_show(struct vty *vty, struct lyd_node *dnode, +void prefix_list_remark_show(struct vty *vty, const struct lyd_node *dnode, bool show_defaults) { int type = yang_dnode_get_enum(dnode, "../type"); @@ -1255,8 +1255,8 @@ DEFPY_YANG (no_interface, ifname, vrf_name); } -static void cli_show_interface(struct vty *vty, struct lyd_node *dnode, - bool show_defaults) +static void cli_show_interface(struct vty *vty, const struct lyd_node *dnode, + bool show_defaults) { const char *vrf; @@ -1269,7 +1269,8 @@ static void cli_show_interface(struct vty *vty, struct lyd_node *dnode, vty_out(vty, "\n"); } -static void cli_show_interface_end(struct vty *vty, struct lyd_node *dnode) +static void cli_show_interface_end(struct vty *vty, + const struct lyd_node *dnode) { vty_out(vty, "exit\n"); } @@ -1305,8 +1306,9 @@ DEFPY_YANG (no_interface_desc, return nb_cli_apply_changes(vty, NULL); } -static void cli_show_interface_desc(struct vty *vty, struct lyd_node *dnode, - bool show_defaults) +static void cli_show_interface_desc(struct vty *vty, + const struct lyd_node *dnode, + bool show_defaults) { vty_out(vty, " description %s\n", yang_dnode_get_string(dnode, NULL)); } diff --git a/lib/northbound.h b/lib/northbound.h index bf04dbda17..a330bd1a30 100644 --- a/lib/northbound.h +++ b/lib/northbound.h @@ -488,7 +488,8 @@ struct nb_callbacks { * >0 when the CLI command for the dnode2 should be printed first * 0 when there is no difference */ - int (*cli_cmp)(struct lyd_node *dnode1, struct lyd_node *dnode2); + int (*cli_cmp)(const struct lyd_node *dnode1, + const struct lyd_node *dnode2); /* * Optional callback to show the CLI command associated to the given @@ -510,7 +511,7 @@ struct nb_callbacks { * nodes, in which case it might be desirable to hide one or more * parts of the command when this parameter is set to false. */ - void (*cli_show)(struct vty *vty, struct lyd_node *dnode, + void (*cli_show)(struct vty *vty, const struct lyd_node *dnode, bool show_defaults); /* @@ -523,7 +524,7 @@ struct nb_callbacks { * libyang data node that should be shown in the form of a CLI * command. */ - void (*cli_show_end)(struct vty *vty, struct lyd_node *dnode); + void (*cli_show_end)(struct vty *vty, const struct lyd_node *dnode); }; struct nb_dependency_callbacks { diff --git a/lib/northbound_cli.c b/lib/northbound_cli.c index 6676c0b072..70c71b18c4 100644 --- a/lib/northbound_cli.c +++ b/lib/northbound_cli.c @@ -550,14 +550,16 @@ void nb_cli_show_config_prepare(struct nb_config *config, bool with_defaults) LYD_VALIDATE_NO_STATE, NULL); } -static int lyd_node_cmp(struct lyd_node **dnode1, struct lyd_node **dnode2) +static int lyd_node_cmp(const struct lyd_node **dnode1, + const struct lyd_node **dnode2) { struct nb_node *nb_node = (*dnode1)->schema->priv; return nb_node->cbs.cli_cmp(*dnode1, *dnode2); } -static void show_dnode_children_cmds(struct vty *vty, struct lyd_node *root, +static void show_dnode_children_cmds(struct vty *vty, + const struct lyd_node *root, bool with_defaults) { struct nb_node *nb_node, *sort_node = NULL; @@ -616,7 +618,7 @@ static void show_dnode_children_cmds(struct vty *vty, struct lyd_node *root, } } -void nb_cli_show_dnode_cmds(struct vty *vty, struct lyd_node *root, +void nb_cli_show_dnode_cmds(struct vty *vty, const struct lyd_node *root, bool with_defaults) { struct nb_node *nb_node; diff --git a/lib/northbound_cli.h b/lib/northbound_cli.h index 28f81f8b39..e472425447 100644 --- a/lib/northbound_cli.h +++ b/lib/northbound_cli.h @@ -127,7 +127,8 @@ extern int nb_cli_rpc(struct vty *vty, const char *xpath, struct list *input, * show_defaults * Specify whether to display default configuration values or not. */ -extern void nb_cli_show_dnode_cmds(struct vty *vty, struct lyd_node *dnode, +extern void nb_cli_show_dnode_cmds(struct vty *vty, + const struct lyd_node *dnode, bool show_defaults); /* diff --git a/lib/routemap.h b/lib/routemap.h index 2c8eb24537..f8fdc67d57 100644 --- a/lib/routemap.h +++ b/lib/routemap.h @@ -908,25 +908,28 @@ void routemap_hook_context_free(struct routemap_hook_context *rhc); extern const struct frr_yang_module_info frr_route_map_info; /* routemap_cli.c */ -extern int route_map_instance_cmp(struct lyd_node *dnode1, - struct lyd_node *dnode2); -extern void route_map_instance_show(struct vty *vty, struct lyd_node *dnode, +extern int route_map_instance_cmp(const struct lyd_node *dnode1, + const struct lyd_node *dnode2); +extern void route_map_instance_show(struct vty *vty, + const struct lyd_node *dnode, bool show_defaults); extern void route_map_instance_show_end(struct vty *vty, - struct lyd_node *dnode); -extern void route_map_condition_show(struct vty *vty, struct lyd_node *dnode, + const struct lyd_node *dnode); +extern void route_map_condition_show(struct vty *vty, + const struct lyd_node *dnode, bool show_defaults); -extern void route_map_action_show(struct vty *vty, struct lyd_node *dnode, +extern void route_map_action_show(struct vty *vty, const struct lyd_node *dnode, bool show_defaults); -extern void route_map_exit_policy_show(struct vty *vty, struct lyd_node *dnode, +extern void route_map_exit_policy_show(struct vty *vty, + const struct lyd_node *dnode, bool show_defaults); -extern void route_map_call_show(struct vty *vty, struct lyd_node *dnode, +extern void route_map_call_show(struct vty *vty, const struct lyd_node *dnode, bool show_defaults); extern void route_map_description_show(struct vty *vty, - struct lyd_node *dnode, + const struct lyd_node *dnode, bool show_defaults); extern void route_map_optimization_disabled_show(struct vty *vty, - struct lyd_node *dnode, + const struct lyd_node *dnode, bool show_defaults); extern void route_map_cli_init(void); diff --git a/lib/routemap_cli.c b/lib/routemap_cli.c index e2db511fc0..9360c7f529 100644 --- a/lib/routemap_cli.c +++ b/lib/routemap_cli.c @@ -103,7 +103,8 @@ DEFPY_YANG( return nb_cli_apply_changes(vty, NULL); } -int route_map_instance_cmp(struct lyd_node *dnode1, struct lyd_node *dnode2) +int route_map_instance_cmp(const struct lyd_node *dnode1, + const struct lyd_node *dnode2) { uint16_t seq1 = yang_dnode_get_uint16(dnode1, "./sequence"); uint16_t seq2 = yang_dnode_get_uint16(dnode2, "./sequence"); @@ -111,7 +112,7 @@ int route_map_instance_cmp(struct lyd_node *dnode1, struct lyd_node *dnode2) return seq1 - seq2; } -void route_map_instance_show(struct vty *vty, struct lyd_node *dnode, +void route_map_instance_show(struct vty *vty, const struct lyd_node *dnode, bool show_defaults) { const char *name = yang_dnode_get_string(dnode, "../name"); @@ -122,7 +123,7 @@ void route_map_instance_show(struct vty *vty, struct lyd_node *dnode, } -void route_map_instance_show_end(struct vty *vty, struct lyd_node *dnode) +void route_map_instance_show_end(struct vty *vty, const struct lyd_node *dnode) { vty_out(vty, "exit\n"); vty_out(vty, "!\n"); @@ -538,11 +539,11 @@ DEFPY_YANG( return nb_cli_apply_changes(vty, NULL); } -void route_map_condition_show(struct vty *vty, struct lyd_node *dnode, +void route_map_condition_show(struct vty *vty, const struct lyd_node *dnode, bool show_defaults) { const char *condition = yang_dnode_get_string(dnode, "./condition"); - struct lyd_node *ln; + const struct lyd_node *ln; const char *acl; if (IS_MATCH_INTERFACE(condition)) { @@ -1013,11 +1014,11 @@ DEFUN_YANG (no_set_srte_color, } -void route_map_action_show(struct vty *vty, struct lyd_node *dnode, +void route_map_action_show(struct vty *vty, const struct lyd_node *dnode, bool show_defaults) { const char *action = yang_dnode_get_string(dnode, "./action"); - struct lyd_node *ln; + const struct lyd_node *ln; const char *acl; if (IS_SET_IPv4_NH(action)) { @@ -1355,7 +1356,7 @@ ALIAS_YANG( "Continue on a different entry within the route-map\n" "Route-map entry sequence number\n") -void route_map_exit_policy_show(struct vty *vty, struct lyd_node *dnode, +void route_map_exit_policy_show(struct vty *vty, const struct lyd_node *dnode, bool show_defaults) { int exit_policy = yang_dnode_get_enum(dnode, NULL); @@ -1397,7 +1398,7 @@ DEFPY_YANG( return nb_cli_apply_changes(vty, NULL); } -void route_map_call_show(struct vty *vty, struct lyd_node *dnode, +void route_map_call_show(struct vty *vty, const struct lyd_node *dnode, bool show_defaults) { vty_out(vty, " call %s\n", yang_dnode_get_string(dnode, NULL)); @@ -1431,7 +1432,7 @@ DEFUN_YANG (no_rmap_description, return nb_cli_apply_changes(vty, NULL); } -void route_map_description_show(struct vty *vty, struct lyd_node *dnode, +void route_map_description_show(struct vty *vty, const struct lyd_node *dnode, bool show_defaults) { vty_out(vty, " description %s\n", yang_dnode_get_string(dnode, NULL)); @@ -1460,7 +1461,7 @@ DEFPY_YANG( } void route_map_optimization_disabled_show(struct vty *vty, - struct lyd_node *dnode, + const struct lyd_node *dnode, bool show_defaults) { const char *name = yang_dnode_get_string(dnode, "../name"); @@ -1507,7 +1508,7 @@ DEFPY_HIDDEN( static int route_map_config_write(struct vty *vty) { - struct lyd_node *dnode; + const struct lyd_node *dnode; int written = 0; dnode = yang_dnode_get(running_config->dnode, |
