Coverage Report

Created: 2026-10-28 06:53

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