13998e2a0SBruce Richardson /* SPDX-License-Identifier: BSD-3-Clause 23998e2a0SBruce Richardson * Copyright(c) 2010-2016 Intel Corporation 31a33c5eaSFan Zhang */ 41a33c5eaSFan Zhang 51a33c5eaSFan Zhang #ifndef __INCLUDE_PARSER_H__ 61a33c5eaSFan Zhang #define __INCLUDE_PARSER_H__ 71a33c5eaSFan Zhang 8*72b452c5SDmitry Kozlyuk #include <ctype.h> 9ed7a0490SPiotr Azarewicz #include <stdint.h> 101a33c5eaSFan Zhang 11ed7a0490SPiotr Azarewicz #include <rte_ip.h> 12ed7a0490SPiotr Azarewicz #include <rte_ether.h> 131a33c5eaSFan Zhang 14ed7a0490SPiotr Azarewicz #define PARSE_DELIMITER " \f\n\r\t\v" 151a33c5eaSFan Zhang 16ed7a0490SPiotr Azarewicz #define skip_white_spaces(pos) \ 17ed7a0490SPiotr Azarewicz ({ \ 18ed7a0490SPiotr Azarewicz __typeof__(pos) _p = (pos); \ 19ed7a0490SPiotr Azarewicz for ( ; isspace(*_p); _p++) \ 20ed7a0490SPiotr Azarewicz ; \ 21ed7a0490SPiotr Azarewicz _p; \ 22ed7a0490SPiotr Azarewicz }) 23ed7a0490SPiotr Azarewicz 24ed7a0490SPiotr Azarewicz static inline size_t 25ed7a0490SPiotr Azarewicz skip_digits(const char *src) 26ed7a0490SPiotr Azarewicz { 27ed7a0490SPiotr Azarewicz size_t i; 28ed7a0490SPiotr Azarewicz 29ed7a0490SPiotr Azarewicz for (i = 0; isdigit(src[i]); i++) 30ed7a0490SPiotr Azarewicz ; 31ed7a0490SPiotr Azarewicz 32ed7a0490SPiotr Azarewicz return i; 33ed7a0490SPiotr Azarewicz } 34ed7a0490SPiotr Azarewicz 35ed7a0490SPiotr Azarewicz int parser_read_arg_bool(const char *p); 36ed7a0490SPiotr Azarewicz 37ed7a0490SPiotr Azarewicz int parser_read_uint64(uint64_t *value, const char *p); 38ed7a0490SPiotr Azarewicz int parser_read_uint32(uint32_t *value, const char *p); 39ed7a0490SPiotr Azarewicz int parser_read_uint16(uint16_t *value, const char *p); 40ed7a0490SPiotr Azarewicz int parser_read_uint8(uint8_t *value, const char *p); 41ed7a0490SPiotr Azarewicz 42ed7a0490SPiotr Azarewicz int parser_read_uint64_hex(uint64_t *value, const char *p); 43ed7a0490SPiotr Azarewicz int parser_read_uint32_hex(uint32_t *value, const char *p); 44ed7a0490SPiotr Azarewicz int parser_read_uint16_hex(uint16_t *value, const char *p); 45ed7a0490SPiotr Azarewicz int parser_read_uint8_hex(uint8_t *value, const char *p); 46ed7a0490SPiotr Azarewicz 47ed7a0490SPiotr Azarewicz int parse_hex_string(char *src, uint8_t *dst, uint32_t *size); 48ed7a0490SPiotr Azarewicz 49ed7a0490SPiotr Azarewicz int parse_ipv4_addr(const char *token, struct in_addr *ipv4); 50ed7a0490SPiotr Azarewicz int parse_ipv6_addr(const char *token, struct in6_addr *ipv6); 516d13ea8eSOlivier Matz int parse_mac_addr(const char *token, struct rte_ether_addr *addr); 52ed7a0490SPiotr Azarewicz int parse_mpls_labels(char *string, uint32_t *labels, uint32_t *n_labels); 53ed7a0490SPiotr Azarewicz 54fbc74e66SJasvinder Singh struct cpu_core_params { 55fbc74e66SJasvinder Singh uint32_t socket_id; 56fbc74e66SJasvinder Singh uint32_t core_id; 57fbc74e66SJasvinder Singh uint32_t thread_id; 58fbc74e66SJasvinder Singh }; 59fbc74e66SJasvinder Singh 60fbc74e66SJasvinder Singh int parse_cpu_core(const char *entry, struct cpu_core_params *p); 61fbc74e66SJasvinder Singh 62ed7a0490SPiotr Azarewicz int parse_tokenize_string(char *string, char *tokens[], uint32_t *n_tokens); 631a33c5eaSFan Zhang 641a33c5eaSFan Zhang #endif 65