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

Function parse_flow_tokens

dpdk/examples/ipsec-secgw/flow.c:132–271  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

130}
131
132void
133parse_flow_tokens(char **tokens, uint32_t n_tokens,
134 struct parse_status *status)
135{
136 struct flow_rule_entry *rule;
137 uint32_t ti = 0;
138
139 if (nb_flow_rule >= FLOW_RULES_MAX) {
140 printf("Too many flow rules\n");
141 return;
142 }
143
144 rule = &flow_rule_tbl[nb_flow_rule];
145 memset(rule, 0, sizeof(*rule));
146
147 for (ti = 0; ti < n_tokens; ti++) {
148 if (strcmp(tokens[ti], "mark") == 0) {
149 INCREMENT_TOKEN_INDEX(ti, n_tokens, status);
150 if (status->status < 0)
151 return;
152 APP_CHECK_TOKEN_IS_NUM(tokens, ti, status);
153 if (status->status < 0)
154 return;
155
156 rule->mark_val.id = atoi(tokens[ti]);
157 rule->enable_mark = true;
158 continue;
159 }
160 if (strcmp(tokens[ti], "eth") == 0) {
161 rule->is_eth = true;
162 continue;
163 }
164
165 if (strcmp(tokens[ti], "ipv4") == 0) {
166 rule->is_ipv4 = true;
167 INCREMENT_TOKEN_INDEX(ti, n_tokens, status);
168 if (status->status < 0)
169 return;
170 if (strcmp(tokens[ti], "src") == 0) {
171 INCREMENT_TOKEN_INDEX(ti, n_tokens, status);
172 if (status->status < 0)
173 return;
174 if (ipv4_addr_cpy(&rule->ipv4.spec.hdr.src_addr,
175 &rule->ipv4.mask.hdr.src_addr,
176 tokens[ti], status))
177 return;
178 }
179 if (strcmp(tokens[ti], "dst") == 0) {
180 INCREMENT_TOKEN_INDEX(ti, n_tokens, status);
181 if (status->status < 0)
182 return;
183 if (ipv4_addr_cpy(&rule->ipv4.spec.hdr.dst_addr,
184 &rule->ipv4.mask.hdr.dst_addr,
185 tokens[ti], status))
186 return;
187 }
188 continue;
189 }

Callers 1

Calls 6

memsetFunction · 0.85
strcmpFunction · 0.85
ipv4_addr_cpyFunction · 0.85
ipv6_addr_cpyFunction · 0.85
sprintfFunction · 0.85
printfFunction · 0.50

Tested by

no test coverage detected