5d0fe4233b
A variety of sockopts exist both for IPv4 and IPv6 but require a different pair of sockopt level/option number. Let's add helpers for these that internally determine the right sockopt to call. This should shorten code that generically wants to support both ipv4 + ipv6 and for the first time adds correct support for some cases where we only called the ipv4 versions, and not the ipv6 options.
37 lines
934 B
C
37 lines
934 B
C
/* SPDX-License-Identifier: LGPL-2.1+ */
|
|
#pragma once
|
|
|
|
/* linux/in6.h or netinet/in.h */
|
|
#ifndef IPV6_UNICAST_IF
|
|
#define IPV6_UNICAST_IF 76
|
|
#endif
|
|
|
|
/* linux/in6.h or netinet/in.h */
|
|
#ifndef IPV6_TRANSPARENT
|
|
#define IPV6_TRANSPARENT 75
|
|
#endif
|
|
|
|
/* Not exposed but defined at include/net/ip.h */
|
|
#ifndef IPV4_MIN_MTU
|
|
#define IPV4_MIN_MTU 68
|
|
#endif
|
|
|
|
/* linux/ipv6.h */
|
|
#ifndef IPV6_MIN_MTU
|
|
#define IPV6_MIN_MTU 1280
|
|
#endif
|
|
|
|
/* Note that LOOPBACK_IFINDEX is currently not exposed by the
|
|
* kernel/glibc, but hardcoded internally by the kernel. However, as
|
|
* it is exported to userspace indirectly via rtnetlink and the
|
|
* ioctls, and made use of widely we define it here too, in a way that
|
|
* is compatible with the kernel's internal definition. */
|
|
#ifndef LOOPBACK_IFINDEX
|
|
#define LOOPBACK_IFINDEX 1
|
|
#endif
|
|
|
|
/* Not exposed yet. Similar values are defined in net/ethernet.h */
|
|
#ifndef ETHERTYPE_LLDP
|
|
#define ETHERTYPE_LLDP 0x88cc
|
|
#endif
|