diff options
| author | Igor Ryzhov <iryzhov@nfware.com> | 2021-09-14 19:04:03 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-09-14 19:04:03 +0300 |
| commit | b8c01bba53961f5ace4fbe0c8723e0988fdaa4f8 (patch) | |
| tree | 89f5f7d3f36710e04799ab060a080ee482e711a5 /lib/zclient.c | |
| parent | 5fbbd15d1eac3ad6a230c363cb8466f17a675511 (diff) | |
| parent | d4a94e93e5ce2dbe61fb2898ea8fec9dd6da15d2 (diff) | |
Merge pull request #9486 from slankdev/slankdev-srv6-no-cli-1
CLI to delete SRv6 locator
Diffstat (limited to 'lib/zclient.c')
| -rw-r--r-- | lib/zclient.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/zclient.c b/lib/zclient.c index a1e7194890..dde60a6c90 100644 --- a/lib/zclient.c +++ b/lib/zclient.c @@ -1105,6 +1105,33 @@ stream_failure: return -1; } +int zapi_srv6_locator_encode(struct stream *s, const struct srv6_locator *l) +{ + stream_putw(s, strlen(l->name)); + stream_put(s, l->name, strlen(l->name)); + stream_putw(s, l->prefix.prefixlen); + stream_put(s, &l->prefix.prefix, sizeof(l->prefix.prefix)); + return 0; +} + +int zapi_srv6_locator_decode(struct stream *s, struct srv6_locator *l) +{ + uint16_t len = 0; + + STREAM_GETW(s, len); + if (len > SRV6_LOCNAME_SIZE) + goto stream_failure; + + STREAM_GET(l->name, s, len); + STREAM_GETW(s, l->prefix.prefixlen); + STREAM_GET(&l->prefix.prefix, s, sizeof(l->prefix.prefix)); + l->prefix.family = AF_INET6; + return 0; + +stream_failure: + return -1; +} + static int zapi_nhg_encode(struct stream *s, int cmd, struct zapi_nhg *api_nhg) { int i; |
