Coverage Report

Created: 2026-01-25 06:28

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