Parse tokens for indirect action commands. */
| 7882 | |
| 7883 | /** Parse tokens for indirect action commands. */ |
| 7884 | static int |
| 7885 | parse_qia(struct context *ctx, const struct token *token, |
| 7886 | const char *str, unsigned int len, |
| 7887 | void *buf, unsigned int size) |
| 7888 | { |
| 7889 | struct buffer *out = buf; |
| 7890 | |
| 7891 | /* Token name must match. */ |
| 7892 | if (parse_default(ctx, token, str, len, NULL, 0) < 0) |
| 7893 | return -1; |
| 7894 | /* Nothing else to do if there is no buffer. */ |
| 7895 | if (!out) |
| 7896 | return len; |
| 7897 | if (!out->command) { |
| 7898 | if (ctx->curr != QUEUE) |
| 7899 | return -1; |
| 7900 | if (sizeof(*out) > size) |
| 7901 | return -1; |
| 7902 | out->args.vc.data = (uint8_t *)out + size; |
| 7903 | return len; |
| 7904 | } |
| 7905 | switch (ctx->curr) { |
| 7906 | case QUEUE_INDIRECT_ACTION: |
| 7907 | return len; |
| 7908 | case QUEUE_INDIRECT_ACTION_CREATE: |
| 7909 | case QUEUE_INDIRECT_ACTION_UPDATE: |
| 7910 | case QUEUE_INDIRECT_ACTION_QUERY_UPDATE: |
| 7911 | out->args.vc.actions = |
| 7912 | (void *)RTE_ALIGN_CEIL((uintptr_t)(out + 1), |
| 7913 | sizeof(double)); |
| 7914 | out->args.vc.attr.group = UINT32_MAX; |
| 7915 | /* fallthrough */ |
| 7916 | case QUEUE_INDIRECT_ACTION_QUERY: |
| 7917 | out->command = ctx->curr; |
| 7918 | ctx->objdata = 0; |
| 7919 | ctx->object = out; |
| 7920 | ctx->objmask = NULL; |
| 7921 | return len; |
| 7922 | case QUEUE_INDIRECT_ACTION_EGRESS: |
| 7923 | out->args.vc.attr.egress = 1; |
| 7924 | return len; |
| 7925 | case QUEUE_INDIRECT_ACTION_INGRESS: |
| 7926 | out->args.vc.attr.ingress = 1; |
| 7927 | return len; |
| 7928 | case QUEUE_INDIRECT_ACTION_TRANSFER: |
| 7929 | out->args.vc.attr.transfer = 1; |
| 7930 | return len; |
| 7931 | case QUEUE_INDIRECT_ACTION_CREATE_POSTPONE: |
| 7932 | return len; |
| 7933 | case QUEUE_INDIRECT_ACTION_QU_MODE: |
| 7934 | return len; |
| 7935 | case QUEUE_INDIRECT_ACTION_LIST: |
| 7936 | out->command = QUEUE_INDIRECT_ACTION_LIST_CREATE; |
| 7937 | return len; |
| 7938 | default: |
| 7939 | return -1; |
| 7940 | } |
| 7941 | } |
nothing calls this directly
no test coverage detected