Coverage Report

Created: 2025-12-11 06:33

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