MCPcopy Create free account
hub / github.com/F-Stack/f-stack / parse_vc

Function parse_vc

dpdk/app/test-pmd/cmdline_flow.c:8037–8173  ·  view source on GitHub ↗

Parse tokens for validate/create commands. */

Source from the content-addressed store, hash-verified

8035
8036/** Parse tokens for validate/create commands. */
8037static int
8038parse_vc(struct context *ctx, const struct token *token,
8039 const char *str, unsigned int len,
8040 void *buf, unsigned int size)
8041{
8042 struct buffer *out = buf;
8043 uint8_t *data;
8044 uint32_t data_size;
8045
8046 /* Token name must match. */
8047 if (parse_default(ctx, token, str, len, NULL, 0) < 0)
8048 return -1;
8049 /* Nothing else to do if there is no buffer. */
8050 if (!out)
8051 return len;
8052 if (!out->command) {
8053 if (ctx->curr != VALIDATE && ctx->curr != CREATE &&
8054 ctx->curr != PATTERN_TEMPLATE_CREATE &&
8055 ctx->curr != ACTIONS_TEMPLATE_CREATE)
8056 return -1;
8057 if (sizeof(*out) > size)
8058 return -1;
8059 out->command = ctx->curr;
8060 ctx->objdata = 0;
8061 ctx->object = out;
8062 ctx->objmask = NULL;
8063 out->args.vc.data = (uint8_t *)out + size;
8064 return len;
8065 }
8066 ctx->objdata = 0;
8067 switch (ctx->curr) {
8068 default:
8069 ctx->object = &out->args.vc.attr;
8070 break;
8071 case VC_TUNNEL_SET:
8072 case VC_TUNNEL_MATCH:
8073 ctx->object = &out->args.vc.tunnel_ops;
8074 break;
8075 case VC_USER_ID:
8076 ctx->object = out;
8077 break;
8078 }
8079 ctx->objmask = NULL;
8080 switch (ctx->curr) {
8081 case VC_GROUP:
8082 case VC_PRIORITY:
8083 case VC_USER_ID:
8084 return len;
8085 case VC_TUNNEL_SET:
8086 out->args.vc.tunnel_ops.enabled = 1;
8087 out->args.vc.tunnel_ops.actions = 1;
8088 return len;
8089 case VC_TUNNEL_MATCH:
8090 out->args.vc.tunnel_ops.enabled = 1;
8091 out->args.vc.tunnel_ops.items = 1;
8092 return len;
8093 case VC_INGRESS:
8094 out->args.vc.attr.ingress = 1;

Calls 2

parse_defaultFunction · 0.85
memsetFunction · 0.85

Tested by

no test coverage detected