1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2010-2016 Intel Corporation 3 */ 4 5 #ifndef __INCLUDE_SOFTNIC_PARSER_H__ 6 #define __INCLUDE_SOFTNIC_PARSER_H__ 7 8 #include <stdint.h> 9 10 #include <rte_ip.h> 11 #include <rte_ether.h> 12 13 #define PARSE_DELIMITER " \f\n\r\t\v" 14 15 #define skip_white_spaces(pos) \ 16 ({ \ 17 __typeof__(pos) _p = (pos); \ 18 for ( ; isspace(*_p); _p++) \ 19 ; \ 20 _p; \ 21 }) 22 23 static inline size_t 24 skip_digits(const char *src) 25 { 26 size_t i; 27 28 for (i = 0; isdigit(src[i]); i++) 29 ; 30 31 return i; 32 } 33 34 int softnic_parser_read_arg_bool(const char *p); 35 36 int softnic_parser_read_int32(int32_t *value, const char *p); 37 38 int softnic_parser_read_uint64(uint64_t *value, const char *p); 39 int softnic_parser_read_uint32(uint32_t *value, const char *p); 40 int softnic_parser_read_uint16(uint16_t *value, const char *p); 41 int softnic_parser_read_uint8(uint8_t *value, const char *p); 42 43 int softnic_parser_read_uint64_hex(uint64_t *value, const char *p); 44 int softnic_parser_read_uint32_hex(uint32_t *value, const char *p); 45 int softnic_parser_read_uint16_hex(uint16_t *value, const char *p); 46 int softnic_parser_read_uint8_hex(uint8_t *value, const char *p); 47 48 int softnic_parse_hex_string(char *src, uint8_t *dst, uint32_t *size); 49 50 int softnic_parse_ipv4_addr(const char *token, struct in_addr *ipv4); 51 int softnic_parse_ipv6_addr(const char *token, struct in6_addr *ipv6); 52 int softnic_parse_mac_addr(const char *token, struct rte_ether_addr *addr); 53 int softnic_parse_mpls_labels(char *string, 54 uint32_t *labels, uint32_t *n_labels); 55 56 struct softnic_cpu_core_params { 57 uint32_t socket_id; 58 uint32_t core_id; 59 uint32_t thread_id; 60 }; 61 62 int softnic_parse_cpu_core(const char *entry, 63 struct softnic_cpu_core_params *p); 64 65 int softnic_parse_tokenize_string(char *string, 66 char *tokens[], uint32_t *n_tokens); 67 68 #endif 69