blob: 59a8cd2c60892f43b5791f781b0f3f96955053da [file] [log] [blame] [raw]
/* SPDX-License-Identifier: LGPL-2.1+ */
#pragma once
#include <linux/loop.h>
#include <linux/rtnetlink.h>
#include <net/ethernet.h>
#include "missing_ethtool.h"
#include "missing_fib_rules.h"
#include "missing_fou.h"
#include "missing_if_bridge.h"
#include "missing_if_link.h"
#include "missing_if_tunnel.h"
#include "missing_vxcan.h"
/* if.h */
/* The following two defines are actually available in the kernel headers for longer, but we define them here anyway,
* since that makes it easier to use them in conjunction with the glibc net/if.h header which conflicts with
* linux/if.h. */
#ifndef IF_OPER_UNKNOWN
#define IF_OPER_UNKNOWN 0
#endif
#ifndef IF_OPER_UP
#define IF_OPER_UP 6
#endif
#ifndef IFF_LOWER_UP
#define IFF_LOWER_UP 0x10000
#endif
#ifndef IFF_DORMANT
#define IFF_DORMANT 0x20000
#endif
/* if_addr.h */
#if !HAVE_IFA_FLAGS
#define IFA_FLAGS 8
#endif
#ifndef IFA_F_MANAGETEMPADDR
#define IFA_F_MANAGETEMPADDR 0x100
#endif
#ifndef IFA_F_NOPREFIXROUTE
#define IFA_F_NOPREFIXROUTE 0x200
#endif
#ifndef IFA_F_MCAUTOJOIN
#define IFA_F_MCAUTOJOIN 0x400
#endif
/* if_arp.h */
#ifndef ARPHRD_IP6GRE
#define ARPHRD_IP6GRE 823
#endif
/* if_bonding.h */
#ifndef BOND_XMIT_POLICY_ENCAP23
#define BOND_XMIT_POLICY_ENCAP23 3
#endif
#ifndef BOND_XMIT_POLICY_ENCAP34
#define BOND_XMIT_POLICY_ENCAP34 4
#endif
/* if_tun.h */
#ifndef IFF_MULTI_QUEUE
#define IFF_MULTI_QUEUE 0x100
#endif
/* in6.h */
#ifndef IPV6_UNICAST_IF
#define IPV6_UNICAST_IF 76
#endif
/* ip.h */
#ifndef IPV4_MIN_MTU
#define IPV4_MIN_MTU 68
#endif
/* ipv6.h */
#ifndef IPV6_MIN_MTU
#define IPV6_MIN_MTU 1280
#endif
/* loop.h */
#if !HAVE_LO_FLAGS_PARTSCAN
#define LO_FLAGS_PARTSCAN 8
#endif
#ifndef LOOP_CTL_REMOVE
#define LOOP_CTL_REMOVE 0x4C81
#endif
#ifndef LOOP_CTL_GET_FREE
#define LOOP_CTL_GET_FREE 0x4C82
#endif
/* netdevice.h */
#ifndef NET_ADDR_RANDOM
#define NET_ADDR_RANDOM 1
#endif
#ifndef NET_NAME_UNKNOWN
#define NET_NAME_UNKNOWN 0
#endif
#ifndef NET_NAME_ENUM
#define NET_NAME_ENUM 1
#endif
#ifndef NET_NAME_PREDICTABLE
#define NET_NAME_PREDICTABLE 2
#endif
#ifndef NET_NAME_USER
#define NET_NAME_USER 3
#endif
#ifndef NET_NAME_RENAMED
#define NET_NAME_RENAMED 4
#endif
/* netlink.h */
#ifndef NETLINK_LIST_MEMBERSHIPS /* b42be38b2778eda2237fc759e55e3b698b05b315 (4.2) */
#define NETLINK_LIST_MEMBERSHIPS 9
#endif
/* rtnetlink.h */
#ifndef RTA_PREF
#define RTA_PREF 20
#endif
#ifndef RTAX_QUICKACK
#define RTAX_QUICKACK 15
#endif
#ifndef RTA_EXPIRES
#define RTA_EXPIRES 23
#endif
/* Note that LOOPBACK_IFINDEX is currently not exported 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