icmp: standardize naming of RFC 8335 PROBE constants
authorAndreas Roeseler <andreas.a.roeseler@gmail.com>
Tue, 27 Apr 2021 15:36:35 +0000 (10:36 -0500)
committerJakub Kicinski <kuba@kernel.org>
Wed, 28 Apr 2021 20:42:23 +0000 (13:42 -0700)
The current definitions of constants for PROBE, currently defined only
in the net-next kernel branch, are inconsistent, with
some beginning with ICMP and others with simply EXT. This patch
attempts to standardize the naming conventions of the constants for
PROBE before their release into a stable Kernel, and to update the
relevant definitions in net/ipv4/icmp.c.

Similarly, the definitions for the code field (previously
ICMP_EXT_MAL_QUERY, etc) use the same prefixes as the type field. This
patch adds _CODE_ to the prefix to clarify the distinction of these
constants.

Signed-off-by: Andreas Roeseler <andreas.a.roeseler@gmail.com>
Acked-by: David Ahern <dsahern@kernel.org>
Link: https://lore.kernel.org/r/20210427153635.2591-1-andreas.a.roeseler@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
include/uapi/linux/icmp.h
net/ipv4/icmp.c

index 222325d..c1da824 100644 (file)
 #define ICMP_EXC_FRAGTIME      1       /* Fragment Reass time exceeded */
 
 /* Codes for EXT_ECHO (PROBE) */
-#define ICMP_EXT_ECHO          42
-#define ICMP_EXT_ECHOREPLY     43
-#define ICMP_EXT_MAL_QUERY     1       /* Malformed Query */
-#define ICMP_EXT_NO_IF         2       /* No such Interface */
-#define ICMP_EXT_NO_TABLE_ENT  3       /* No such Table Entry */
-#define ICMP_EXT_MULT_IFS      4       /* Multiple Interfaces Satisfy Query */
+#define ICMP_EXT_ECHO                  42
+#define ICMP_EXT_ECHOREPLY             43
+#define ICMP_EXT_CODE_MAL_QUERY                1       /* Malformed Query */
+#define ICMP_EXT_CODE_NO_IF            2       /* No such Interface */
+#define ICMP_EXT_CODE_NO_TABLE_ENT     3       /* No such Table Entry */
+#define ICMP_EXT_CODE_MULT_IFS         4       /* Multiple Interfaces Satisfy Query */
 
 /* Constants for EXT_ECHO (PROBE) */
-#define EXT_ECHOREPLY_ACTIVE   (1 << 2)/* active bit in reply message */
-#define EXT_ECHOREPLY_IPV4     (1 << 1)/* ipv4 bit in reply message */
-#define EXT_ECHOREPLY_IPV6     1       /* ipv6 bit in reply message */
-#define EXT_ECHO_CTYPE_NAME    1
-#define EXT_ECHO_CTYPE_INDEX   2
-#define EXT_ECHO_CTYPE_ADDR    3
-#define ICMP_AFI_IP            1       /* Address Family Identifier for ipv4 */
-#define ICMP_AFI_IP6           2       /* Address Family Identifier for ipv6 */
+#define ICMP_EXT_ECHOREPLY_ACTIVE      (1 << 2)/* active bit in reply message */
+#define ICMP_EXT_ECHOREPLY_IPV4                (1 << 1)/* ipv4 bit in reply message */
+#define ICMP_EXT_ECHOREPLY_IPV6                1       /* ipv6 bit in reply message */
+#define ICMP_EXT_ECHO_CTYPE_NAME       1
+#define ICMP_EXT_ECHO_CTYPE_INDEX      2
+#define ICMP_EXT_ECHO_CTYPE_ADDR       3
+#define ICMP_AFI_IP                    1       /* Address Family Identifier for ipv4 */
+#define ICMP_AFI_IP6                   2       /* Address Family Identifier for ipv6 */
 
 struct icmphdr {
   __u8         type;
index 8bd988f..7b6931a 100644 (file)
@@ -1033,7 +1033,7 @@ static bool icmp_echo(struct sk_buff *skb)
        status = 0;
        dev = NULL;
        switch (iio->extobj_hdr.class_type) {
-       case EXT_ECHO_CTYPE_NAME:
+       case ICMP_EXT_ECHO_CTYPE_NAME:
                iio = skb_header_pointer(skb, sizeof(_ext_hdr), sizeof(_iio), &_iio);
                if (ident_len >= IFNAMSIZ)
                        goto send_mal_query;
@@ -1041,14 +1041,14 @@ static bool icmp_echo(struct sk_buff *skb)
                memcpy(buff, &iio->ident.name, ident_len);
                dev = dev_get_by_name(net, buff);
                break;
-       case EXT_ECHO_CTYPE_INDEX:
+       case ICMP_EXT_ECHO_CTYPE_INDEX:
                iio = skb_header_pointer(skb, sizeof(_ext_hdr), sizeof(iio->extobj_hdr) +
                                         sizeof(iio->ident.ifindex), &_iio);
                if (ident_len != sizeof(iio->ident.ifindex))
                        goto send_mal_query;
                dev = dev_get_by_index(net, ntohl(iio->ident.ifindex));
                break;
-       case EXT_ECHO_CTYPE_ADDR:
+       case ICMP_EXT_ECHO_CTYPE_ADDR:
                if (ident_len != sizeof(iio->ident.addr.ctype3_hdr) +
                                 iio->ident.addr.ctype3_hdr.addrlen)
                        goto send_mal_query;
@@ -1080,23 +1080,23 @@ static bool icmp_echo(struct sk_buff *skb)
                goto send_mal_query;
        }
        if (!dev) {
-               icmp_param.data.icmph.code = ICMP_EXT_NO_IF;
+               icmp_param.data.icmph.code = ICMP_EXT_CODE_NO_IF;
                goto send_reply;
        }
        /* Fill bits in reply message */
        if (dev->flags & IFF_UP)
-               status |= EXT_ECHOREPLY_ACTIVE;
+               status |= ICMP_EXT_ECHOREPLY_ACTIVE;
        if (__in_dev_get_rcu(dev) && __in_dev_get_rcu(dev)->ifa_list)
-               status |= EXT_ECHOREPLY_IPV4;
+               status |= ICMP_EXT_ECHOREPLY_IPV4;
        if (!list_empty(&rcu_dereference(dev->ip6_ptr)->addr_list))
-               status |= EXT_ECHOREPLY_IPV6;
+               status |= ICMP_EXT_ECHOREPLY_IPV6;
        dev_put(dev);
        icmp_param.data.icmph.un.echo.sequence |= htons(status);
 send_reply:
        icmp_reply(&icmp_param, skb);
                return true;
 send_mal_query:
-       icmp_param.data.icmph.code = ICMP_EXT_MAL_QUERY;
+       icmp_param.data.icmph.code = ICMP_EXT_CODE_MAL_QUERY;
        goto send_reply;
 }