Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chopps/mgmtd simplify xpaths #14525

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ ForEachMacros:
- 'FOREACH_AFI_SAFI'
- 'FOREACH_AFI_SAFI_NSF'
- 'FOREACH_BE_APPLY_BATCH_IN_LIST'
- 'FOREACH_BE_CLIENT_BITS'
- 'FOREACH_BE_TXN_BATCH_IN_LIST'
- 'FOREACH_BE_TXN_IN_LIST'
- 'FOREACH_CMT_REC'
Expand Down
24 changes: 24 additions & 0 deletions lib/frrstr.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
* FRR string processing utilities.
* Copyright (C) 2018 Cumulus Networks, Inc.
* Quentin Young
* Copyright (c) 2023, LabN Consulting, L.L.C.
*/

#include "zebra.h"
Expand Down Expand Up @@ -225,3 +226,26 @@ char *frrstr_hex(char *buff, size_t bufsiz, const uint8_t *str, size_t num)

return buff;
}

const char *frrstr_skip_over_char(const char *s, int skipc)
{
int c, quote = 0;

while ((c = *s++)) {
if (c == '\\') {
if (!*s++)
return NULL;
continue;
}
if (quote) {
if (c == quote)
quote = 0;
continue;
}
if (c == skipc)
return s;
if (c == '"' || c == '\'')
quote = c;
}
return NULL;
}
8 changes: 8 additions & 0 deletions lib/frrstr.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
* FRR string processing utilities.
* Copyright (C) 2018 Cumulus Networks, Inc.
* Quentin Young
* Copyright (c) 2023, LabN Consulting, L.L.C.
*/

#ifndef _FRRSTR_H_
Expand Down Expand Up @@ -166,6 +167,13 @@ int all_digit(const char *str);
*/
char *frrstr_hex(char *buff, size_t bufsiz, const uint8_t *str, size_t num);


/*
* Advance past a given char `skipc` in a string, while honoring quoting and
idryzhov marked this conversation as resolved.
Show resolved Hide resolved
* backslash escapes (i.e., ignore `skipc` which occur in quoted sections).
*/
const char *frrstr_skip_over_char(const char *s, int skipc);

#ifdef __cplusplus
}
#endif
Expand Down
7 changes: 0 additions & 7 deletions lib/mgmt_be_client.c
Original file line number Diff line number Diff line change
Expand Up @@ -118,13 +118,6 @@ struct mgmt_be_client {

struct debug mgmt_dbg_be_client = {0, "Management backend client operations"};

const char *mgmt_be_client_names[MGMTD_BE_CLIENT_ID_MAX + 1] = {
#ifdef HAVE_STATICD
[MGMTD_BE_CLIENT_ID_STATICD] = "staticd",
#endif
[MGMTD_BE_CLIENT_ID_MAX] = "Unknown/Invalid",
};

static int mgmt_be_client_send_msg(struct mgmt_be_client *client_ctx,
Mgmtd__BeMessage *be_msg)
{
Expand Down
44 changes: 0 additions & 44 deletions lib/mgmt_be_client.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,27 +16,6 @@ extern "C" {
#include "mgmt_pb.h"
#include "mgmtd/mgmt_defines.h"

/***************************************************************
* Client IDs
***************************************************************/

/*
* Add enum value for each supported component, wrap with
* #ifdef HAVE_COMPONENT
*/
enum mgmt_be_client_id {
MGMTD_BE_CLIENT_ID_MIN = 0,
MGMTD_BE_CLIENT_ID_INIT = -1,
#ifdef HAVE_STATICD
MGMTD_BE_CLIENT_ID_STATICD,
#endif
MGMTD_BE_CLIENT_ID_MAX
};

#define FOREACH_MGMTD_BE_CLIENT_ID(id) \
for ((id) = MGMTD_BE_CLIENT_ID_MIN; \
(id) < MGMTD_BE_CLIENT_ID_MAX; (id)++)

/***************************************************************
* Constants
***************************************************************/
Expand Down Expand Up @@ -108,29 +87,6 @@ struct mgmt_be_client_cbs {
* Global data exported
***************************************************************/

extern const char *mgmt_be_client_names[MGMTD_BE_CLIENT_ID_MAX + 1];

static inline const char *mgmt_be_client_id2name(enum mgmt_be_client_id id)
{
if (id > MGMTD_BE_CLIENT_ID_MAX)
id = MGMTD_BE_CLIENT_ID_MAX;
return mgmt_be_client_names[id];
}

static inline enum mgmt_be_client_id
mgmt_be_client_name2id(const char *name)
{
enum mgmt_be_client_id id;

FOREACH_MGMTD_BE_CLIENT_ID (id) {
if (!strncmp(mgmt_be_client_names[id], name,
MGMTD_CLIENT_NAME_MAX_LEN))
return id;
}

return MGMTD_BE_CLIENT_ID_MAX;
}

extern struct debug mgmt_dbg_be_client;

/***************************************************************
Expand Down
9 changes: 1 addition & 8 deletions lib/yang.c
Original file line number Diff line number Diff line change
Expand Up @@ -254,15 +254,8 @@ struct lysc_node *yang_find_snode(struct ly_ctx *ly_ctx, const char *xpath,
uint32_t options)
{
struct lysc_node *snode;
struct ly_set *set;
LY_ERR err;

err = lys_find_xpath(ly_native_ctx, NULL, xpath, options, &set);
if (err || !set->count)
return NULL;

snode = set->snodes[0];
ly_set_free(set, NULL);
snode = (struct lysc_node *)lys_find_path(ly_ctx, NULL, xpath, 0);

return snode;
}
Expand Down
Loading
Loading