0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-11-08 12:18:42 +00:00

Netlink: move OS-specific headers and defines to sysdep

Minor changes from committer.
This commit is contained in:
Alexander Chernikov 2022-12-16 19:20:05 +01:00 committed by Ondrej Zajicek
parent 7b6c964977
commit 176fc68aed
5 changed files with 96 additions and 61 deletions

View File

@ -0,0 +1,29 @@
/*
* Netlink FreeBSD-specific functions
*
* (c) 2022 Alexander Chernikov <melifaro@FreeBSD.org>
*
* Can be freely distributed and used under the terms of the GNU GPL.
*/
#ifndef _BIRD_NETLINK_SYS_H_
#define _BIRD_NETLINK_SYS_H_
#include <netlink/netlink.h>
#include <netlink/netlink_route.h>
#ifndef AF_MPLS
#define AF_MPLS 39
#endif
#ifndef SO_RCVBUFFORCE
#define SO_RCVBUFFORCE SO_RCVBUF
#endif
static inline int
netlink_error_to_os(int error)
{
return (error);
}
#endif

View File

@ -17,16 +17,7 @@
#define CONFIG_INCLUDE_SYSIO_H "sysdep/bsd/sysio.h" #define CONFIG_INCLUDE_SYSIO_H "sysdep/bsd/sysio.h"
#define CONFIG_INCLUDE_KRTSYS_H "sysdep/linux/krt-sys.h" #define CONFIG_INCLUDE_KRTSYS_H "sysdep/linux/krt-sys.h"
#define CONFIG_INCLUDE_NLSYS_H "sysdep/bsd-netlink/netlink-sys.h"
#define CONFIG_FREEBSD_NETLINK
#ifndef AF_MPLS
#define AF_MPLS 39
#endif
#ifndef SO_RCVBUFFORCE
#define SO_RCVBUFFORCE SO_RCVBUF
#endif
/* /*
Link: sysdep/unix Link: sysdep/unix

View File

@ -16,6 +16,7 @@
#define CONFIG_INCLUDE_SYSIO_H "sysdep/linux/sysio.h" #define CONFIG_INCLUDE_SYSIO_H "sysdep/linux/sysio.h"
#define CONFIG_INCLUDE_KRTSYS_H "sysdep/linux/krt-sys.h" #define CONFIG_INCLUDE_KRTSYS_H "sysdep/linux/krt-sys.h"
#define CONFIG_INCLUDE_NLSYS_H "sysdep/linux/netlink-sys.h"
#define CONFIG_LINUX_NETLINK #define CONFIG_LINUX_NETLINK

View File

@ -0,0 +1,63 @@
/*
* BIRD -- Linux Netlink Interface
*
* (c) 1999--2000 Martin Mares <mj@ucw.cz>
*
* Can be freely distributed and used under the terms of the GNU GPL.
*/
#ifndef _BIRD_NETLINK_SYS_H_
#define _BIRD_NETLINK_SYS_H_
#include <asm/types.h>
#include <linux/if.h>
#include <linux/netlink.h>
#include <linux/rtnetlink.h>
#ifdef HAVE_MPLS_KERNEL
#include <linux/lwtunnel.h>
#endif
#ifndef MSG_TRUNC /* Hack: Several versions of glibc miss this one :( */
#define MSG_TRUNC 0x20
#endif
#ifndef IFA_FLAGS
#define IFA_FLAGS 8
#endif
#ifndef IFF_LOWER_UP
#define IFF_LOWER_UP 0x10000
#endif
#ifndef RTA_TABLE
#define RTA_TABLE 15
#endif
#ifndef RTA_VIA
#define RTA_VIA 18
#endif
#ifndef RTA_NEWDST
#define RTA_NEWDST 19
#endif
#ifndef RTA_ENCAP_TYPE
#define RTA_ENCAP_TYPE 21
#endif
#ifndef RTA_ENCAP
#define RTA_ENCAP 22
#endif
#ifndef NETLINK_GET_STRICT_CHK
#define NETLINK_GET_STRICT_CHK 12
#endif
static inline int
netlink_error_to_os(int error)
{
return -error;
}
#endif

View File

@ -27,56 +27,7 @@
#include "lib/hash.h" #include "lib/hash.h"
#include "conf/conf.h" #include "conf/conf.h"
#ifdef CONFIG_LINUX_NETLINK #include CONFIG_INCLUDE_NLSYS_H
#include <asm/types.h>
#include <linux/if.h>
#include <linux/netlink.h>
#include <linux/rtnetlink.h>
#endif
#ifdef CONFIG_FREEBSD_NETLINK
#include <netlink/netlink.h>
#include <netlink/netlink_route.h>
#endif
#ifdef HAVE_MPLS_KERNEL
#include <linux/lwtunnel.h>
#endif
#ifndef MSG_TRUNC /* Hack: Several versions of glibc miss this one :( */
#define MSG_TRUNC 0x20
#endif
#ifndef IFA_FLAGS
#define IFA_FLAGS 8
#endif
#ifndef IFF_LOWER_UP
#define IFF_LOWER_UP 0x10000
#endif
#ifndef RTA_TABLE
#define RTA_TABLE 15
#endif
#ifndef RTA_VIA
#define RTA_VIA 18
#endif
#ifndef RTA_NEWDST
#define RTA_NEWDST 19
#endif
#ifndef RTA_ENCAP_TYPE
#define RTA_ENCAP_TYPE 21
#endif
#ifndef RTA_ENCAP
#define RTA_ENCAP 22
#endif
#ifndef NETLINK_GET_STRICT_CHK
#define NETLINK_GET_STRICT_CHK 12
#endif
#define krt_ipv4(p) ((p)->af == AF_INET) #define krt_ipv4(p) ((p)->af == AF_INET)
@ -320,7 +271,7 @@ nl_error(struct nlmsghdr *h, int ignore_esrch)
return ENOBUFS; return ENOBUFS;
} }
e = (struct nlmsgerr *) NLMSG_DATA(h); e = (struct nlmsgerr *) NLMSG_DATA(h);
ec = -e->error; ec = netlink_error_to_os(e->error);
if (ec && !(ignore_esrch && (ec == ESRCH))) if (ec && !(ignore_esrch && (ec == ESRCH)))
log_rl(&rl_netlink_err, L_WARN "Netlink: %s", strerror(ec)); log_rl(&rl_netlink_err, L_WARN "Netlink: %s", strerror(ec));
return ec; return ec;