| File: | home/bhubbard/working/src/ceph/src/spdk/dpdk/lib/librte_mbuf/rte_mbuf_ptype.c | 
| Warning: | line 205, column 3 Value stored to 'buflen' is never read  | 
[?] Use j/k keys for keyboard navigation
| 1 | /* SPDX-License-Identifier: BSD-3-Clause | 
| 2 | * Copyright 2016 6WIND S.A. | 
| 3 | */ | 
| 4 | |
| 5 | #include <stdint.h> | 
| 6 | |
| 7 | #include <rte_mbuf.h> | 
| 8 | #include <rte_mbuf_ptype.h> | 
| 9 | |
| 10 | /* get the name of the l2 packet type */ | 
| 11 | const char *rte_get_ptype_l2_name(uint32_t ptype) | 
| 12 | { | 
| 13 | switch (ptype & RTE_PTYPE_L2_MASK0x0000000f) { | 
| 14 | case RTE_PTYPE_L2_ETHER0x00000001: return "L2_ETHER"; | 
| 15 | case RTE_PTYPE_L2_ETHER_TIMESYNC0x00000002: return "L2_ETHER_TIMESYNC"; | 
| 16 | case RTE_PTYPE_L2_ETHER_ARP0x00000003: return "L2_ETHER_ARP"; | 
| 17 | case RTE_PTYPE_L2_ETHER_LLDP0x00000004: return "L2_ETHER_LLDP"; | 
| 18 | case RTE_PTYPE_L2_ETHER_NSH0x00000005: return "L2_ETHER_NSH"; | 
| 19 | case RTE_PTYPE_L2_ETHER_VLAN0x00000006: return "L2_ETHER_VLAN"; | 
| 20 | case RTE_PTYPE_L2_ETHER_QINQ0x00000007: return "L2_ETHER_QINQ"; | 
| 21 | case RTE_PTYPE_L2_ETHER_PPPOE0x00000008: return "L2_ETHER_PPPOE"; | 
| 22 | case RTE_PTYPE_L2_ETHER_FCOE0x00000009: return "L2_ETHER_FCOE"; | 
| 23 | case RTE_PTYPE_L2_ETHER_MPLS0x0000000a: return "L2_ETHER_MPLS"; | 
| 24 | default: return "L2_UNKNOWN"; | 
| 25 | } | 
| 26 | } | 
| 27 | |
| 28 | /* get the name of the l3 packet type */ | 
| 29 | const char *rte_get_ptype_l3_name(uint32_t ptype) | 
| 30 | { | 
| 31 | switch (ptype & RTE_PTYPE_L3_MASK0x000000f0) { | 
| 32 | case RTE_PTYPE_L3_IPV40x00000010: return "L3_IPV4"; | 
| 33 | case RTE_PTYPE_L3_IPV4_EXT0x00000030: return "L3_IPV4_EXT"; | 
| 34 | case RTE_PTYPE_L3_IPV60x00000040: return "L3_IPV6"; | 
| 35 | case RTE_PTYPE_L3_IPV4_EXT_UNKNOWN0x00000090: return "L3_IPV4_EXT_UNKNOWN"; | 
| 36 | case RTE_PTYPE_L3_IPV6_EXT0x000000c0: return "L3_IPV6_EXT"; | 
| 37 | case RTE_PTYPE_L3_IPV6_EXT_UNKNOWN0x000000e0: return "L3_IPV6_EXT_UNKNOWN"; | 
| 38 | default: return "L3_UNKNOWN"; | 
| 39 | } | 
| 40 | } | 
| 41 | |
| 42 | /* get the name of the l4 packet type */ | 
| 43 | const char *rte_get_ptype_l4_name(uint32_t ptype) | 
| 44 | { | 
| 45 | switch (ptype & RTE_PTYPE_L4_MASK0x00000f00) { | 
| 46 | case RTE_PTYPE_L4_TCP0x00000100: return "L4_TCP"; | 
| 47 | case RTE_PTYPE_L4_UDP0x00000200: return "L4_UDP"; | 
| 48 | case RTE_PTYPE_L4_FRAG0x00000300: return "L4_FRAG"; | 
| 49 | case RTE_PTYPE_L4_SCTP0x00000400: return "L4_SCTP"; | 
| 50 | case RTE_PTYPE_L4_ICMP0x00000500: return "L4_ICMP"; | 
| 51 | case RTE_PTYPE_L4_NONFRAG0x00000600: return "L4_NONFRAG"; | 
| 52 | case RTE_PTYPE_L4_IGMP0x00000700: return "L4_IGMP"; | 
| 53 | default: return "L4_UNKNOWN"; | 
| 54 | } | 
| 55 | } | 
| 56 | |
| 57 | /* get the name of the tunnel packet type */ | 
| 58 | const char *rte_get_ptype_tunnel_name(uint32_t ptype) | 
| 59 | { | 
| 60 | switch (ptype & RTE_PTYPE_TUNNEL_MASK0x0000f000) { | 
| 61 | case RTE_PTYPE_TUNNEL_IP0x00001000: return "TUNNEL_IP"; | 
| 62 | case RTE_PTYPE_TUNNEL_GRE0x00002000: return "TUNNEL_GRE"; | 
| 63 | case RTE_PTYPE_TUNNEL_VXLAN0x00003000: return "TUNNEL_VXLAN"; | 
| 64 | case RTE_PTYPE_TUNNEL_NVGRE0x00004000: return "TUNNEL_NVGRE"; | 
| 65 | case RTE_PTYPE_TUNNEL_GENEVE0x00005000: return "TUNNEL_GENEVE"; | 
| 66 | case RTE_PTYPE_TUNNEL_GRENAT0x00006000: return "TUNNEL_GRENAT"; | 
| 67 | case RTE_PTYPE_TUNNEL_GTPC0x00007000: return "TUNNEL_GTPC"; | 
| 68 | case RTE_PTYPE_TUNNEL_GTPU0x00008000: return "TUNNEL_GTPU"; | 
| 69 | case RTE_PTYPE_TUNNEL_ESP0x00009000: return "TUNNEL_ESP"; | 
| 70 | case RTE_PTYPE_TUNNEL_L2TP0x0000a000: return "TUNNEL_L2TP"; | 
| 71 | case RTE_PTYPE_TUNNEL_VXLAN_GPE0x0000b000: return "TUNNEL_VXLAN_GPE"; | 
| 72 | case RTE_PTYPE_TUNNEL_MPLS_IN_UDP0x0000d000: return "TUNNEL_MPLS_IN_UDP"; | 
| 73 | case RTE_PTYPE_TUNNEL_MPLS_IN_GRE0x0000c000: return "TUNNEL_MPLS_IN_GRE"; | 
| 74 | default: return "TUNNEL_UNKNOWN"; | 
| 75 | } | 
| 76 | } | 
| 77 | |
| 78 | /* get the name of the inner_l2 packet type */ | 
| 79 | const char *rte_get_ptype_inner_l2_name(uint32_t ptype) | 
| 80 | { | 
| 81 | switch (ptype & RTE_PTYPE_INNER_L2_MASK0x000f0000) { | 
| 82 | case RTE_PTYPE_INNER_L2_ETHER0x00010000: return "INNER_L2_ETHER"; | 
| 83 | case RTE_PTYPE_INNER_L2_ETHER_VLAN0x00020000: return "INNER_L2_ETHER_VLAN"; | 
| 84 | case RTE_PTYPE_INNER_L2_ETHER_QINQ0x00030000: return "INNER_L2_ETHER_QINQ"; | 
| 85 | default: return "INNER_L2_UNKNOWN"; | 
| 86 | } | 
| 87 | } | 
| 88 | |
| 89 | /* get the name of the inner_l3 packet type */ | 
| 90 | const char *rte_get_ptype_inner_l3_name(uint32_t ptype) | 
| 91 | { | 
| 92 | switch (ptype & RTE_PTYPE_INNER_L3_MASK0x00f00000) { | 
| 93 | case RTE_PTYPE_INNER_L3_IPV40x00100000: return "INNER_L3_IPV4"; | 
| 94 | case RTE_PTYPE_INNER_L3_IPV4_EXT0x00200000: return "INNER_L3_IPV4_EXT"; | 
| 95 | case RTE_PTYPE_INNER_L3_IPV60x00300000: return "INNER_L3_IPV6"; | 
| 96 | case RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN0x00400000: | 
| 97 | return "INNER_L3_IPV4_EXT_UNKNOWN"; | 
| 98 | case RTE_PTYPE_INNER_L3_IPV6_EXT0x00500000: return "INNER_L3_IPV6_EXT"; | 
| 99 | case RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN0x00600000: | 
| 100 | return "INNER_L3_IPV6_EXT_UNKNOWN"; | 
| 101 | default: return "INNER_L3_UNKNOWN"; | 
| 102 | } | 
| 103 | } | 
| 104 | |
| 105 | /* get the name of the inner_l4 packet type */ | 
| 106 | const char *rte_get_ptype_inner_l4_name(uint32_t ptype) | 
| 107 | { | 
| 108 | switch (ptype & RTE_PTYPE_INNER_L4_MASK0x0f000000) { | 
| 109 | case RTE_PTYPE_INNER_L4_TCP0x01000000: return "INNER_L4_TCP"; | 
| 110 | case RTE_PTYPE_INNER_L4_UDP0x02000000: return "INNER_L4_UDP"; | 
| 111 | case RTE_PTYPE_INNER_L4_FRAG0x03000000: return "INNER_L4_FRAG"; | 
| 112 | case RTE_PTYPE_INNER_L4_SCTP0x04000000: return "INNER_L4_SCTP"; | 
| 113 | case RTE_PTYPE_INNER_L4_ICMP0x05000000: return "INNER_L4_ICMP"; | 
| 114 | case RTE_PTYPE_INNER_L4_NONFRAG0x06000000: return "INNER_L4_NONFRAG"; | 
| 115 | default: return "INNER_L4_UNKNOWN"; | 
| 116 | } | 
| 117 | } | 
| 118 | |
| 119 | /* write the packet type name into the buffer */ | 
| 120 | int rte_get_ptype_name(uint32_t ptype, char *buf, size_t buflen) | 
| 121 | { | 
| 122 | int ret; | 
| 123 | |
| 124 | if (buflen == 0) | 
| 125 | return -1; | 
| 126 | |
| 127 | buf[0] = '\0'; | 
| 128 | if ((ptype & RTE_PTYPE_ALL_MASK0x0fffffff) == RTE_PTYPE_UNKNOWN0x00000000) { | 
| 129 | ret = snprintf(buf, buflen, "UNKNOWN"); | 
| 130 | if (ret < 0) | 
| 131 | return -1; | 
| 132 | if ((size_t)ret >= buflen) | 
| 133 | return -1; | 
| 134 | return 0; | 
| 135 | } | 
| 136 | |
| 137 | if ((ptype & RTE_PTYPE_L2_MASK0x0000000f) != 0) { | 
| 138 | ret = snprintf(buf, buflen, "%s ", | 
| 139 | rte_get_ptype_l2_name(ptype)); | 
| 140 | if (ret < 0) | 
| 141 | return -1; | 
| 142 | if ((size_t)ret >= buflen) | 
| 143 | return -1; | 
| 144 | buf += ret; | 
| 145 | buflen -= ret; | 
| 146 | } | 
| 147 | if ((ptype & RTE_PTYPE_L3_MASK0x000000f0) != 0) { | 
| 148 | ret = snprintf(buf, buflen, "%s ", | 
| 149 | rte_get_ptype_l3_name(ptype)); | 
| 150 | if (ret < 0) | 
| 151 | return -1; | 
| 152 | if ((size_t)ret >= buflen) | 
| 153 | return -1; | 
| 154 | buf += ret; | 
| 155 | buflen -= ret; | 
| 156 | } | 
| 157 | if ((ptype & RTE_PTYPE_L4_MASK0x00000f00) != 0) { | 
| 158 | ret = snprintf(buf, buflen, "%s ", | 
| 159 | rte_get_ptype_l4_name(ptype)); | 
| 160 | if (ret < 0) | 
| 161 | return -1; | 
| 162 | if ((size_t)ret >= buflen) | 
| 163 | return -1; | 
| 164 | buf += ret; | 
| 165 | buflen -= ret; | 
| 166 | } | 
| 167 | if ((ptype & RTE_PTYPE_TUNNEL_MASK0x0000f000) != 0) { | 
| 168 | ret = snprintf(buf, buflen, "%s ", | 
| 169 | rte_get_ptype_tunnel_name(ptype)); | 
| 170 | if (ret < 0) | 
| 171 | return -1; | 
| 172 | if ((size_t)ret >= buflen) | 
| 173 | return -1; | 
| 174 | buf += ret; | 
| 175 | buflen -= ret; | 
| 176 | } | 
| 177 | if ((ptype & RTE_PTYPE_INNER_L2_MASK0x000f0000) != 0) { | 
| 178 | ret = snprintf(buf, buflen, "%s ", | 
| 179 | rte_get_ptype_inner_l2_name(ptype)); | 
| 180 | if (ret < 0) | 
| 181 | return -1; | 
| 182 | if ((size_t)ret >= buflen) | 
| 183 | return -1; | 
| 184 | buf += ret; | 
| 185 | buflen -= ret; | 
| 186 | } | 
| 187 | if ((ptype & RTE_PTYPE_INNER_L3_MASK0x00f00000) != 0) { | 
| 188 | ret = snprintf(buf, buflen, "%s ", | 
| 189 | rte_get_ptype_inner_l3_name(ptype)); | 
| 190 | if (ret < 0) | 
| 191 | return -1; | 
| 192 | if ((size_t)ret >= buflen) | 
| 193 | return -1; | 
| 194 | buf += ret; | 
| 195 | buflen -= ret; | 
| 196 | } | 
| 197 | if ((ptype & RTE_PTYPE_INNER_L4_MASK0x0f000000) != 0) { | 
| 198 | ret = snprintf(buf, buflen, "%s ", | 
| 199 | rte_get_ptype_inner_l4_name(ptype)); | 
| 200 | if (ret < 0) | 
| 201 | return -1; | 
| 202 | if ((size_t)ret >= buflen) | 
| 203 | return -1; | 
| 204 | buf += ret; | 
| 205 | buflen -= ret; | 
Value stored to 'buflen' is never read  | |
| 206 | } | 
| 207 | |
| 208 | return 0; | 
| 209 | } |