1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
/* SPDX-License-Identifier: BSD-3-Clause
* Copyright(c) 2010-2014 Intel Corporation.
* Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org>
* All rights reserved.
*/
#ifndef _PARSE_IPADDR_H_
#define _PARSE_IPADDR_H_
#include <cmdline_parse.h>
#include <rte_ip.h>
#ifdef __cplusplus
extern "C" {
#endif
#define CMDLINE_IPADDR_V4 0x01
#define CMDLINE_IPADDR_V6 0x02
#define CMDLINE_IPADDR_NETWORK 0x04
struct cmdline_ipaddr {
uint8_t family;
union {
struct in_addr ipv4;
struct rte_ipv6_addr ipv6;
} addr;
unsigned int prefixlen; /* in case of network only */
};
typedef struct cmdline_ipaddr cmdline_ipaddr_t;
struct cmdline_token_ipaddr_data {
uint8_t flags;
};
struct cmdline_token_ipaddr {
struct cmdline_token_hdr hdr;
struct cmdline_token_ipaddr_data ipaddr_data;
};
typedef struct cmdline_token_ipaddr cmdline_parse_token_ipaddr_t;
extern struct cmdline_token_ops cmdline_token_ipaddr_ops;
int cmdline_parse_ipaddr(cmdline_parse_token_hdr_t *tk, const char *srcbuf,
void *res, unsigned ressize);
int cmdline_get_help_ipaddr(cmdline_parse_token_hdr_t *tk, char *dstbuf,
unsigned int size);
#define TOKEN_IPADDR_INITIALIZER(structure, field) \
{ \
/* hdr */ \
{ \
&cmdline_token_ipaddr_ops, /* ops */ \
offsetof(structure, field), /* offset */ \
}, \
/* ipaddr_data */ \
{ \
CMDLINE_IPADDR_V4 | /* flags */ \
CMDLINE_IPADDR_V6, \
}, \
}
#define TOKEN_IPV4_INITIALIZER(structure, field) \
{ \
/* hdr */ \
{ \
&cmdline_token_ipaddr_ops, /* ops */ \
offsetof(structure, field), /* offset */ \
}, \
/* ipaddr_data */ \
{ \
CMDLINE_IPADDR_V4, /* flags */ \
}, \
}
#define TOKEN_IPV6_INITIALIZER(structure, field) \
{ \
/* hdr */ \
{ \
&cmdline_token_ipaddr_ops, /* ops */ \
offsetof(structure, field), /* offset */ \
}, \
/* ipaddr_data */ \
{ \
CMDLINE_IPADDR_V6, /* flags */ \
}, \
}
#define TOKEN_IPNET_INITIALIZER(structure, field) \
{ \
/* hdr */ \
{ \
&cmdline_token_ipaddr_ops, /* ops */ \
offsetof(structure, field), /* offset */ \
}, \
/* ipaddr_data */ \
{ \
CMDLINE_IPADDR_V4 | /* flags */ \
CMDLINE_IPADDR_V6 | \
CMDLINE_IPADDR_NETWORK, \
}, \
}
#define TOKEN_IPV4NET_INITIALIZER(structure, field) \
{ \
/* hdr */ \
{ \
&cmdline_token_ipaddr_ops, /* ops */ \
offsetof(structure, field), /* offset */ \
}, \
/* ipaddr_data */ \
{ \
CMDLINE_IPADDR_V4 | /* flags */ \
CMDLINE_IPADDR_NETWORK, \
}, \
}
#define TOKEN_IPV6NET_INITIALIZER(structure, field) \
{ \
/* hdr */ \
{ \
&cmdline_token_ipaddr_ops, /* ops */ \
offsetof(structure, field), /* offset */ \
}, \
/* ipaddr_data */ \
{ \
CMDLINE_IPADDR_V4 | /* flags */ \
CMDLINE_IPADDR_NETWORK, \
}, \
}
#ifdef __cplusplus
}
#endif
#endif /* _PARSE_IPADDR_H_ */
|