Coverage Report

Created: 2025-08-28 06:46

/work/build/src/shared/ip-protocol-from-name.inc
Line
Count
Source (jump to first uncovered line)
1
/* ANSI-C code produced by gperf version 3.1 */
2
/* Command-line: /usr/bin/gperf -L ANSI-C -t --ignore-case -N lookup_ip_protocol -H hash_ip_protocol_name -p -C src/shared/ip-protocol-from-name.gperf  */
3
/* Computed positions: -k'1-3' */
4
5
#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
6
      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
7
      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
8
      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
9
      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
10
      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
11
      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
12
      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
13
      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
14
      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
15
      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
16
      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
17
      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
18
      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
19
      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
20
      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
21
      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
22
      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
23
      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
24
      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
25
      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
26
      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
27
      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
28
/* The character set is not based on ISO-646.  */
29
#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gperf@gnu.org>."
30
#endif
31
32
#line 1 "src/shared/ip-protocol-from-name.gperf"
33
34
_Pragma("GCC diagnostic ignored \"-Wimplicit-fallthrough\"")
35
#if __GNUC__ >= 15
36
_Pragma("GCC diagnostic ignored \"-Wzero-as-null-pointer-constant\"")
37
#endif
38
#include <netinet/in.h>
39
#line 8 "src/shared/ip-protocol-from-name.gperf"
40
struct ip_protocol_name { const char* name; int id; };
41
42
#define TOTAL_KEYWORDS 37
43
18.1k
#define MIN_WORD_LENGTH 2
44
40.8k
#define MAX_WORD_LENGTH 8
45
#define MIN_HASH_VALUE 2
46
14.7k
#define MAX_HASH_VALUE 79
47
/* maximum key range = 78, duplicates = 0 */
48
49
#ifndef GPERF_DOWNCASE
50
#define GPERF_DOWNCASE 1
51
static unsigned char gperf_downcase[256] =
52
  {
53
      0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,
54
     15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,
55
     30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,
56
     45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
57
     60,  61,  62,  63,  64,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106,
58
    107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
59
    122,  91,  92,  93,  94,  95,  96,  97,  98,  99, 100, 101, 102, 103, 104,
60
    105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
61
    120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
62
    135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
63
    150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
64
    165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
65
    180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
66
    195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
67
    210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
68
    225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
69
    240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
70
    255
71
  };
72
#endif
73
74
#ifndef GPERF_CASE_STRCMP
75
#define GPERF_CASE_STRCMP 1
76
static int
77
gperf_case_strcmp (register const char *s1, register const char *s2)
78
4.16k
{
79
4.16k
  for (;;)
80
18.8k
    {
81
18.8k
      unsigned char c1 = gperf_downcase[(unsigned char)*s1++];
82
18.8k
      unsigned char c2 = gperf_downcase[(unsigned char)*s2++];
83
18.8k
      if (c1 != 0 && c1 == c2)
84
14.6k
        continue;
85
4.16k
      return (int)c1 - (int)c2;
86
18.8k
    }
87
4.16k
}
88
#endif
89
90
#ifdef __GNUC__
91
__inline
92
#else
93
#ifdef __cplusplus
94
inline
95
#endif
96
#endif
97
static unsigned int
98
hash_ip_protocol_name (register const char *str, register size_t len)
99
14.7k
{
100
14.7k
  static const unsigned char asso_values[] =
101
14.7k
    {
102
14.7k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
103
14.7k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
104
14.7k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
105
14.7k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
106
14.7k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
107
14.7k
       0, 80, 80, 80, 80, 80, 80, 80, 80, 80,
108
14.7k
      80, 80, 80, 80, 80, 10,  0,  5, 15, 20,
109
14.7k
      25, 10, 15,  0, 80, 80, 40,  0,  5, 10,
110
14.7k
       0, 80, 20, 20,  5, 20, 35, 25, 80, 80,
111
14.7k
      80, 80, 80, 80, 80, 80, 80, 10,  0,  5,
112
14.7k
      15, 20, 25, 10, 15,  0, 80, 80, 40,  0,
113
14.7k
       5, 10,  0, 80, 20, 20,  5, 20, 35, 25,
114
14.7k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
115
14.7k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
116
14.7k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
117
14.7k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
118
14.7k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
119
14.7k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
120
14.7k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
121
14.7k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
122
14.7k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
123
14.7k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
124
14.7k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
125
14.7k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
126
14.7k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
127
14.7k
      80, 80, 80, 80, 80, 80
128
14.7k
    };
129
14.7k
  register unsigned int hval = len;
130
131
14.7k
  switch (hval)
132
14.7k
    {
133
8.88k
      default:
134
8.88k
        hval += asso_values[(unsigned char)str[2]];
135
      /*FALLTHROUGH*/
136
14.7k
      case 2:
137
14.7k
        hval += asso_values[(unsigned char)str[1]];
138
      /*FALLTHROUGH*/
139
14.7k
      case 1:
140
14.7k
        hval += asso_values[(unsigned char)str[0]];
141
14.7k
        break;
142
14.7k
    }
143
14.7k
  return hval;
144
14.7k
}
145
146
const struct ip_protocol_name *
147
lookup_ip_protocol (register const char *str, register size_t len)
148
20.4k
{
149
20.4k
  static const struct ip_protocol_name wordlist[] =
150
20.4k
    {
151
20.4k
      {(char*)0}, {(char*)0},
152
20.4k
#line 28 "src/shared/ip-protocol-from-name.gperf"
153
20.4k
      {"IP", IPPROTO_IP},
154
20.4k
#line 37 "src/shared/ip-protocol-from-name.gperf"
155
20.4k
      {"PIM", IPPROTO_PIM},
156
20.4k
#line 29 "src/shared/ip-protocol-from-name.gperf"
157
20.4k
      {"IPIP", IPPROTO_IPIP},
158
20.4k
      {(char*)0}, {(char*)0},
159
20.4k
#line 45 "src/shared/ip-protocol-from-name.gperf"
160
20.4k
      {"TP", IPPROTO_TP},
161
20.4k
#line 35 "src/shared/ip-protocol-from-name.gperf"
162
20.4k
      {"MTP", IPPROTO_MTP},
163
20.4k
#line 24 "src/shared/ip-protocol-from-name.gperf"
164
20.4k
      {"ICMP", IPPROTO_ICMP},
165
20.4k
#line 34 "src/shared/ip-protocol-from-name.gperf"
166
20.4k
      {"MPTCP", IPPROTO_MPTCP},
167
20.4k
#line 25 "src/shared/ip-protocol-from-name.gperf"
168
20.4k
      {"ICMPV6", IPPROTO_ICMPV6},
169
20.4k
      {(char*)0},
170
20.4k
#line 44 "src/shared/ip-protocol-from-name.gperf"
171
20.4k
      {"TCP", IPPROTO_TCP},
172
20.4k
#line 27 "src/shared/ip-protocol-from-name.gperf"
173
20.4k
      {"IGMP", IPPROTO_IGMP},
174
20.4k
      {(char*)0}, {(char*)0},
175
20.4k
#line 32 "src/shared/ip-protocol-from-name.gperf"
176
20.4k
      {"MH", IPPROTO_MH},
177
20.4k
#line 26 "src/shared/ip-protocol-from-name.gperf"
178
20.4k
      {"IDP", IPPROTO_IDP},
179
20.4k
#line 14 "src/shared/ip-protocol-from-name.gperf"
180
20.4k
      {"COMP", IPPROTO_COMP},
181
20.4k
      {(char*)0}, {(char*)0}, {(char*)0},
182
20.4k
#line 38 "src/shared/ip-protocol-from-name.gperf"
183
20.4k
      {"PUP", IPPROTO_PUP},
184
20.4k
#line 36 "src/shared/ip-protocol-from-name.gperf"
185
20.4k
      {"NONE", IPPROTO_NONE},
186
20.4k
      {(char*)0}, {(char*)0},
187
20.4k
#line 12 "src/shared/ip-protocol-from-name.gperf"
188
20.4k
      {"AH", IPPROTO_AH},
189
20.4k
#line 43 "src/shared/ip-protocol-from-name.gperf"
190
20.4k
      {"SMC", IPPROTO_SMC},
191
20.4k
#line 15 "src/shared/ip-protocol-from-name.gperf"
192
20.4k
      {"DCCP", IPPROTO_DCCP},
193
20.4k
      {(char*)0}, {(char*)0},
194
20.4k
#line 23 "src/shared/ip-protocol-from-name.gperf"
195
20.4k
      {"HOPOPTS", IPPROTO_HOPOPTS},
196
20.4k
#line 17 "src/shared/ip-protocol-from-name.gperf"
197
20.4k
      {"EGP", IPPROTO_EGP},
198
20.4k
#line 42 "src/shared/ip-protocol-from-name.gperf"
199
20.4k
      {"SCTP", IPPROTO_SCTP},
200
20.4k
#line 18 "src/shared/ip-protocol-from-name.gperf"
201
20.4k
      {"ENCAP", IPPROTO_ENCAP},
202
20.4k
      {(char*)0},
203
20.4k
#line 11 "src/shared/ip-protocol-from-name.gperf"
204
20.4k
      {"AGGFRAG", IPPROTO_AGGFRAG},
205
20.4k
#line 46 "src/shared/ip-protocol-from-name.gperf"
206
20.4k
      {"UDP", IPPROTO_UDP},
207
20.4k
#line 30 "src/shared/ip-protocol-from-name.gperf"
208
20.4k
      {"IPV6", IPPROTO_IPV6},
209
20.4k
      {(char*)0}, {(char*)0},
210
20.4k
#line 47 "src/shared/ip-protocol-from-name.gperf"
211
20.4k
      {"UDPLITE", IPPROTO_UDPLITE},
212
20.4k
#line 19 "src/shared/ip-protocol-from-name.gperf"
213
20.4k
      {"ESP", IPPROTO_ESP},
214
20.4k
#line 33 "src/shared/ip-protocol-from-name.gperf"
215
20.4k
      {"MPLS", IPPROTO_MPLS},
216
20.4k
      {(char*)0},
217
20.4k
#line 13 "src/shared/ip-protocol-from-name.gperf"
218
20.4k
      {"BEETPH", IPPROTO_BEETPH},
219
20.4k
#line 16 "src/shared/ip-protocol-from-name.gperf"
220
20.4k
      {"DSTOPTS", IPPROTO_DSTOPTS},
221
20.4k
#line 20 "src/shared/ip-protocol-from-name.gperf"
222
20.4k
      {"ETHERNET", IPPROTO_ETHERNET},
223
20.4k
#line 31 "src/shared/ip-protocol-from-name.gperf"
224
20.4k
      {"L2TP", IPPROTO_L2TP},
225
20.4k
      {(char*)0}, {(char*)0}, {(char*)0},
226
20.4k
#line 22 "src/shared/ip-protocol-from-name.gperf"
227
20.4k
      {"GRE", IPPROTO_GRE},
228
20.4k
      {(char*)0}, {(char*)0}, {(char*)0},
229
20.4k
#line 40 "src/shared/ip-protocol-from-name.gperf"
230
20.4k
      {"ROUTING", IPPROTO_ROUTING},
231
20.4k
#line 39 "src/shared/ip-protocol-from-name.gperf"
232
20.4k
      {"RAW", IPPROTO_RAW},
233
20.4k
      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
234
20.4k
#line 21 "src/shared/ip-protocol-from-name.gperf"
235
20.4k
      {"FRAGMENT", IPPROTO_FRAGMENT},
236
20.4k
      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
237
20.4k
      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
238
20.4k
      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
239
20.4k
      {(char*)0}, {(char*)0}, {(char*)0},
240
20.4k
#line 41 "src/shared/ip-protocol-from-name.gperf"
241
20.4k
      {"RSVP", IPPROTO_RSVP}
242
20.4k
    };
243
244
20.4k
  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
245
14.7k
    {
246
14.7k
      register unsigned int key = hash_ip_protocol_name (str, len);
247
248
14.7k
      if (key <= MAX_HASH_VALUE)
249
7.59k
        {
250
7.59k
          register const char *s = wordlist[key].name;
251
252
7.59k
          if (s && (((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strcmp (str, s))
253
1.92k
            return &wordlist[key];
254
7.59k
        }
255
14.7k
    }
256
18.5k
  return 0;
257
20.4k
}