Coverage Report

Created: 2026-08-08 06:57

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/work/build/src/shared/ip-protocol-from-name.inc
Line
Count
Source
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
19.8k
#define MIN_WORD_LENGTH 2
44
47.3k
#define MAX_WORD_LENGTH 8
45
#define MIN_HASH_VALUE 2
46
15.3k
#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
5.38k
{
79
5.38k
  for (;;)
80
23.2k
    {
81
23.2k
      unsigned char c1 = gperf_downcase[(unsigned char)*s1++];
82
23.2k
      unsigned char c2 = gperf_downcase[(unsigned char)*s2++];
83
23.2k
      if (c1 != 0 && c1 == c2)
84
17.8k
        continue;
85
5.38k
      return (int)c1 - (int)c2;
86
23.2k
    }
87
5.38k
}
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
15.3k
{
100
15.3k
  static const unsigned char asso_values[] =
101
15.3k
    {
102
15.3k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
103
15.3k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
104
15.3k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
105
15.3k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
106
15.3k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
107
15.3k
       0, 80, 80, 80, 80, 80, 80, 80, 80, 80,
108
15.3k
      80, 80, 80, 80, 80, 10,  0,  5, 15, 20,
109
15.3k
      25, 10, 15,  0, 80, 80, 40,  0,  5, 10,
110
15.3k
       0, 80, 20, 20,  5, 20, 35, 25, 80, 80,
111
15.3k
      80, 80, 80, 80, 80, 80, 80, 10,  0,  5,
112
15.3k
      15, 20, 25, 10, 15,  0, 80, 80, 40,  0,
113
15.3k
       5, 10,  0, 80, 20, 20,  5, 20, 35, 25,
114
15.3k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
115
15.3k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
116
15.3k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
117
15.3k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
118
15.3k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
119
15.3k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
120
15.3k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
121
15.3k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
122
15.3k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
123
15.3k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
124
15.3k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
125
15.3k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
126
15.3k
      80, 80, 80, 80, 80, 80, 80, 80, 80, 80,
127
15.3k
      80, 80, 80, 80, 80, 80
128
15.3k
    };
129
15.3k
  register unsigned int hval = len;
130
131
15.3k
  switch (hval)
132
15.3k
    {
133
9.07k
      default:
134
9.07k
        hval += asso_values[(unsigned char)str[2]];
135
      /*FALLTHROUGH*/
136
15.3k
      case 2:
137
15.3k
        hval += asso_values[(unsigned char)str[1]];
138
      /*FALLTHROUGH*/
139
15.3k
      case 1:
140
15.3k
        hval += asso_values[(unsigned char)str[0]];
141
15.3k
        break;
142
15.3k
    }
143
15.3k
  return hval;
144
15.3k
}
145
146
const struct ip_protocol_name *
147
lookup_ip_protocol (register const char *str, register size_t len)
148
23.6k
{
149
23.6k
  static const struct ip_protocol_name wordlist[] =
150
23.6k
    {
151
23.6k
      {(char*)0}, {(char*)0},
152
23.6k
#line 28 "src/shared/ip-protocol-from-name.gperf"
153
23.6k
      {"IP", IPPROTO_IP},
154
23.6k
#line 37 "src/shared/ip-protocol-from-name.gperf"
155
23.6k
      {"PIM", IPPROTO_PIM},
156
23.6k
#line 29 "src/shared/ip-protocol-from-name.gperf"
157
23.6k
      {"IPIP", IPPROTO_IPIP},
158
23.6k
      {(char*)0}, {(char*)0},
159
23.6k
#line 45 "src/shared/ip-protocol-from-name.gperf"
160
23.6k
      {"TP", IPPROTO_TP},
161
23.6k
#line 35 "src/shared/ip-protocol-from-name.gperf"
162
23.6k
      {"MTP", IPPROTO_MTP},
163
23.6k
#line 24 "src/shared/ip-protocol-from-name.gperf"
164
23.6k
      {"ICMP", IPPROTO_ICMP},
165
23.6k
#line 34 "src/shared/ip-protocol-from-name.gperf"
166
23.6k
      {"MPTCP", IPPROTO_MPTCP},
167
23.6k
#line 25 "src/shared/ip-protocol-from-name.gperf"
168
23.6k
      {"ICMPV6", IPPROTO_ICMPV6},
169
23.6k
      {(char*)0},
170
23.6k
#line 44 "src/shared/ip-protocol-from-name.gperf"
171
23.6k
      {"TCP", IPPROTO_TCP},
172
23.6k
#line 27 "src/shared/ip-protocol-from-name.gperf"
173
23.6k
      {"IGMP", IPPROTO_IGMP},
174
23.6k
      {(char*)0}, {(char*)0},
175
23.6k
#line 32 "src/shared/ip-protocol-from-name.gperf"
176
23.6k
      {"MH", IPPROTO_MH},
177
23.6k
#line 26 "src/shared/ip-protocol-from-name.gperf"
178
23.6k
      {"IDP", IPPROTO_IDP},
179
23.6k
#line 14 "src/shared/ip-protocol-from-name.gperf"
180
23.6k
      {"COMP", IPPROTO_COMP},
181
23.6k
      {(char*)0}, {(char*)0}, {(char*)0},
182
23.6k
#line 38 "src/shared/ip-protocol-from-name.gperf"
183
23.6k
      {"PUP", IPPROTO_PUP},
184
23.6k
#line 36 "src/shared/ip-protocol-from-name.gperf"
185
23.6k
      {"NONE", IPPROTO_NONE},
186
23.6k
      {(char*)0}, {(char*)0},
187
23.6k
#line 12 "src/shared/ip-protocol-from-name.gperf"
188
23.6k
      {"AH", IPPROTO_AH},
189
23.6k
#line 43 "src/shared/ip-protocol-from-name.gperf"
190
23.6k
      {"SMC", IPPROTO_SMC},
191
23.6k
#line 15 "src/shared/ip-protocol-from-name.gperf"
192
23.6k
      {"DCCP", IPPROTO_DCCP},
193
23.6k
      {(char*)0}, {(char*)0},
194
23.6k
#line 23 "src/shared/ip-protocol-from-name.gperf"
195
23.6k
      {"HOPOPTS", IPPROTO_HOPOPTS},
196
23.6k
#line 17 "src/shared/ip-protocol-from-name.gperf"
197
23.6k
      {"EGP", IPPROTO_EGP},
198
23.6k
#line 42 "src/shared/ip-protocol-from-name.gperf"
199
23.6k
      {"SCTP", IPPROTO_SCTP},
200
23.6k
#line 18 "src/shared/ip-protocol-from-name.gperf"
201
23.6k
      {"ENCAP", IPPROTO_ENCAP},
202
23.6k
      {(char*)0},
203
23.6k
#line 11 "src/shared/ip-protocol-from-name.gperf"
204
23.6k
      {"AGGFRAG", IPPROTO_AGGFRAG},
205
23.6k
#line 46 "src/shared/ip-protocol-from-name.gperf"
206
23.6k
      {"UDP", IPPROTO_UDP},
207
23.6k
#line 30 "src/shared/ip-protocol-from-name.gperf"
208
23.6k
      {"IPV6", IPPROTO_IPV6},
209
23.6k
      {(char*)0}, {(char*)0},
210
23.6k
#line 47 "src/shared/ip-protocol-from-name.gperf"
211
23.6k
      {"UDPLITE", IPPROTO_UDPLITE},
212
23.6k
#line 19 "src/shared/ip-protocol-from-name.gperf"
213
23.6k
      {"ESP", IPPROTO_ESP},
214
23.6k
#line 33 "src/shared/ip-protocol-from-name.gperf"
215
23.6k
      {"MPLS", IPPROTO_MPLS},
216
23.6k
      {(char*)0},
217
23.6k
#line 13 "src/shared/ip-protocol-from-name.gperf"
218
23.6k
      {"BEETPH", IPPROTO_BEETPH},
219
23.6k
#line 16 "src/shared/ip-protocol-from-name.gperf"
220
23.6k
      {"DSTOPTS", IPPROTO_DSTOPTS},
221
23.6k
#line 20 "src/shared/ip-protocol-from-name.gperf"
222
23.6k
      {"ETHERNET", IPPROTO_ETHERNET},
223
23.6k
#line 31 "src/shared/ip-protocol-from-name.gperf"
224
23.6k
      {"L2TP", IPPROTO_L2TP},
225
23.6k
      {(char*)0}, {(char*)0}, {(char*)0},
226
23.6k
#line 22 "src/shared/ip-protocol-from-name.gperf"
227
23.6k
      {"GRE", IPPROTO_GRE},
228
23.6k
      {(char*)0}, {(char*)0}, {(char*)0},
229
23.6k
#line 40 "src/shared/ip-protocol-from-name.gperf"
230
23.6k
      {"ROUTING", IPPROTO_ROUTING},
231
23.6k
#line 39 "src/shared/ip-protocol-from-name.gperf"
232
23.6k
      {"RAW", IPPROTO_RAW},
233
23.6k
      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
234
23.6k
#line 21 "src/shared/ip-protocol-from-name.gperf"
235
23.6k
      {"FRAGMENT", IPPROTO_FRAGMENT},
236
23.6k
      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
237
23.6k
      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
238
23.6k
      {(char*)0}, {(char*)0}, {(char*)0}, {(char*)0},
239
23.6k
      {(char*)0}, {(char*)0}, {(char*)0},
240
23.6k
#line 41 "src/shared/ip-protocol-from-name.gperf"
241
23.6k
      {"RSVP", IPPROTO_RSVP}
242
23.6k
    };
243
244
23.6k
  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
245
15.3k
    {
246
15.3k
      register unsigned int key = hash_ip_protocol_name (str, len);
247
248
15.3k
      if (key <= MAX_HASH_VALUE)
249
10.1k
        {
250
10.1k
          register const char *s = wordlist[key].name;
251
252
10.1k
          if (s && (((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strcmp (str, s))
253
3.44k
            return &wordlist[key];
254
10.1k
        }
255
15.3k
    }
256
20.2k
  return 0;
257
23.6k
}