]> git.proxmox.com Git - mirror_frr.git/blobdiff - bfdd/linux.c
sharpd: Allow sharpd to accept nexthop group as part of route install
[mirror_frr.git] / bfdd / linux.c
index 5f24ef4d19cc573e122806f2c860e055760322a9..e260851ddba6a229573406c7540c3e20b3a99ec0 100644 (file)
 
 #ifdef BFD_LINUX
 
-/* XXX: fix compilation error on Ubuntu 16.04 or older. */
-#ifndef _UAPI_IPV6_H
-#define _UAPI_IPV6_H
-#endif /* _UAPI_IPV6_H */
-
-#include <linux/filter.h>
-#include <linux/if_packet.h>
-
-#include <netinet/if_ether.h>
-
-#include <net/if.h>
-#include <sys/ioctl.h>
-
 #include "bfd.h"
 
-/* Berkeley Packet filter code to filter out BFD Echo packets.
- * tcpdump -dd "(udp dst port 3785)"
- */
-static struct sock_filter bfd_echo_filter[] = {
-       {0x28, 0, 0, 0x0000000c}, {0x15, 0, 4, 0x000086dd},
-       {0x30, 0, 0, 0x00000014}, {0x15, 0, 11, 0x00000011},
-       {0x28, 0, 0, 0x00000038}, {0x15, 8, 9, 0x00000ec9},
-       {0x15, 0, 8, 0x00000800}, {0x30, 0, 0, 0x00000017},
-       {0x15, 0, 6, 0x00000011}, {0x28, 0, 0, 0x00000014},
-       {0x45, 4, 0, 0x00001fff}, {0xb1, 0, 0, 0x0000000e},
-       {0x48, 0, 0, 0x00000010}, {0x15, 0, 1, 0x00000ec9},
-       {0x6, 0, 0, 0x0000ffff},  {0x6, 0, 0, 0x00000000},
-};
-
-/* Berkeley Packet filter code to filter out BFD vxlan packets.
- * tcpdump -dd "(udp dst port 4789)"
- */
-static struct sock_filter bfd_vxlan_filter[] = {
-       {0x28, 0, 0, 0x0000000c}, {0x15, 0, 4, 0x000086dd},
-       {0x30, 0, 0, 0x00000014}, {0x15, 0, 11, 0x00000011},
-       {0x28, 0, 0, 0x00000038}, {0x15, 8, 9, 0x000012b5},
-       {0x15, 0, 8, 0x00000800}, {0x30, 0, 0, 0x00000017},
-       {0x15, 0, 6, 0x00000011}, {0x28, 0, 0, 0x00000014},
-       {0x45, 4, 0, 0x00001fff}, {0xb1, 0, 0, 0x0000000e},
-       {0x48, 0, 0, 0x00000010}, {0x15, 0, 1, 0x000012b5},
-       {0x6, 0, 0, 0x0000ffff},  {0x6, 0, 0, 0x00000000},
-};
-
 
 /*
  * Definitions.
@@ -128,55 +87,6 @@ void fetch_portname_from_ifindex(int ifindex, char *ifname, size_t ifnamelen)
                          ifr.ifr_name, ifname);
 }
 
-int ptm_bfd_echo_sock_init(void)
-{
-       int s;
-       struct sock_fprog bpf = {.len = sizeof(bfd_echo_filter)
-                                       / sizeof(bfd_echo_filter[0]),
-                                .filter = bfd_echo_filter};
-
-       s = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP));
-       if (s == -1) {
-               log_error("echo-socket: creation failure: %s", strerror(errno));
-               return -1;
-       }
-
-       if (setsockopt(s, SOL_SOCKET, SO_ATTACH_FILTER, &bpf, sizeof(bpf))
-           == -1) {
-               log_error("echo-socket: setsockopt(SO_ATTACH_FILTER): %s",
-                         strerror(errno));
-               close(s);
-               return -1;
-       }
-
-       return s;
-}
-
-int ptm_bfd_vxlan_sock_init(void)
-{
-       int s;
-       struct sock_fprog bpf = {.len = sizeof(bfd_vxlan_filter)
-                                       / sizeof(bfd_vxlan_filter[0]),
-                                .filter = bfd_vxlan_filter};
-
-       s = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP));
-       if (s == -1) {
-               log_error("vxlan-socket: creation failure: %s",
-                         strerror(errno));
-               return -1;
-       }
-
-       if (setsockopt(s, SOL_SOCKET, SO_ATTACH_FILTER, &bpf, sizeof(bpf))
-           == -1) {
-               log_error("vxlan-socket: setsockopt(SO_ATTACH_FILTER): %s",
-                         strerror(errno));
-               close(s);
-               return -1;
-       }
-
-       return s;
-}
-
 int bp_bind_dev(int sd __attribute__((__unused__)),
                const char *dev __attribute__((__unused__)))
 {
@@ -197,25 +107,4 @@ int bp_bind_dev(int sd __attribute__((__unused__)),
        return 0;
 }
 
-uint16_t udp4_checksum(struct iphdr *iph, uint8_t *buf, int len)
-{
-       char *ptr;
-       struct udp_psuedo_header pudp_hdr;
-       uint16_t csum;
-
-       pudp_hdr.saddr = iph->saddr;
-       pudp_hdr.daddr = iph->daddr;
-       pudp_hdr.reserved = 0;
-       pudp_hdr.protocol = iph->protocol;
-       pudp_hdr.len = htons(len);
-
-       ptr = XMALLOC(MTYPE_BFDD_TMP, UDP_PSUEDO_HDR_LEN + len);
-       memcpy(ptr, &pudp_hdr, UDP_PSUEDO_HDR_LEN);
-       memcpy(ptr + UDP_PSUEDO_HDR_LEN, buf, len);
-
-       csum = checksum((uint16_t *)ptr, UDP_PSUEDO_HDR_LEN + len);
-       XFREE(MTYPE_BFDD_TMP, ptr);
-       return csum;
-}
-
 #endif /* BFD_LINUX */