X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=examples%2Fip_pipeline%2Fparser.h;h=9bd36af3241853f8ce9c1011c12045b609d5aafd;hb=a1e7c17555e8f77d520ba5f06ed26c00e77a2bd1;hp=58b59daf3d4450f9ff6dd940d3b09813bea17a2c;hpb=1a33c5ea2f45cde3273ba278e953b8b21c0302d0;p=dpdk.git diff --git a/examples/ip_pipeline/parser.h b/examples/ip_pipeline/parser.h index 58b59daf3d..9bd36af324 100644 --- a/examples/ip_pipeline/parser.h +++ b/examples/ip_pipeline/parser.h @@ -1,7 +1,7 @@ /*- * BSD LICENSE * - * Copyright(c) 2010-2015 Intel Corporation. All rights reserved. + * Copyright(c) 2010-2016 Intel Corporation. All rights reserved. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -34,17 +34,51 @@ #ifndef __INCLUDE_PARSER_H__ #define __INCLUDE_PARSER_H__ -int -parser_read_arg_bool(const char *p); +#include -int -parser_read_uint64(uint64_t *value, const char *p); +#include +#include -int -parser_read_uint32(uint32_t *value, const char *p); +#define PARSE_DELIMITER " \f\n\r\t\v" -int -parse_hex_string(char *src, uint8_t *dst, uint32_t *size); +#define skip_white_spaces(pos) \ +({ \ + __typeof__(pos) _p = (pos); \ + for ( ; isspace(*_p); _p++) \ + ; \ + _p; \ +}) -#endif +static inline size_t +skip_digits(const char *src) +{ + size_t i; + + for (i = 0; isdigit(src[i]); i++) + ; + + return i; +} + +int parser_read_arg_bool(const char *p); + +int parser_read_uint64(uint64_t *value, const char *p); +int parser_read_uint32(uint32_t *value, const char *p); +int parser_read_uint16(uint16_t *value, const char *p); +int parser_read_uint8(uint8_t *value, const char *p); +int parser_read_uint64_hex(uint64_t *value, const char *p); +int parser_read_uint32_hex(uint32_t *value, const char *p); +int parser_read_uint16_hex(uint16_t *value, const char *p); +int parser_read_uint8_hex(uint8_t *value, const char *p); + +int parse_hex_string(char *src, uint8_t *dst, uint32_t *size); + +int parse_ipv4_addr(const char *token, struct in_addr *ipv4); +int parse_ipv6_addr(const char *token, struct in6_addr *ipv6); +int parse_mac_addr(const char *token, struct ether_addr *addr); +int parse_mpls_labels(char *string, uint32_t *labels, uint32_t *n_labels); + +int parse_tokenize_string(char *string, char *tokens[], uint32_t *n_tokens); + +#endif