]> git.puffer.fish Git - mirror/frr.git/commitdiff
bfdd: remove VxLAN code
authorRafael Zalamena <rzalamena@opensourcerouting.org>
Tue, 28 Aug 2018 19:20:52 +0000 (16:20 -0300)
committerRafael Zalamena <rzalamena@opensourcerouting.org>
Mon, 3 Sep 2018 13:41:33 +0000 (10:41 -0300)
Remove all VxLAN code. There are probably better ways to write VxLAN
support without having to use raw sockets and depend on extra user
configuration input.

Signed-off-by: Rafael Zalamena <rzalamena@opensourcerouting.org>
bfdd/bfd.c
bfdd/bfd.h
bfdd/bfd_packet.c
bfdd/bfdctl.h
bfdd/bfdd.c
bfdd/bfdd_vty.c
bfdd/bsd.c
bfdd/config.c
bfdd/linux.c

index b3253a14d75150a26a4ed1ace5f50218c390277f..8919eeaa93471d80acc19a82b3823a3cd98a0edf 100644 (file)
@@ -78,7 +78,7 @@ struct bfd_session *bs_peer_find(struct bfd_peer_cfg *bpc)
        } else {
                memset(&shop, 0, sizeof(shop));
                shop.peer = bpc->bpc_peer;
-               if (!bpc->bpc_has_vxlan && bpc->bpc_has_localif)
+               if (bpc->bpc_has_localif)
                        strlcpy(shop.port_name, bpc->bpc_localif,
                                sizeof(shop.port_name));
 
@@ -311,33 +311,6 @@ struct bfd_session *ptm_bfd_sess_find(struct bfd_pkt *cp, char *port_name,
        return l_bfd;
 }
 
-#if 0  /* TODO VxLAN Support */
-static void
-_update_vxlan_sess_parms(struct bfd_session *bfd, bfd_sess_parms *sess_parms)
-{
-       struct bfd_session_vxlan_info *vxlan_info = &bfd->vxlan_info;
-       bfd_parms_list *parms = &sess_parms->parms;
-
-       vxlan_info->vnid = parms->vnid;
-       vxlan_info->check_tnl_key = parms->check_tnl_key;
-       vxlan_info->forwarding_if_rx = parms->forwarding_if_rx;
-       vxlan_info->cpath_down = parms->cpath_down;
-       vxlan_info->decay_min_rx = parms->decay_min_rx;
-
-       inet_aton(parms->local_dst_ip, &vxlan_info->local_dst_ip);
-       inet_aton(parms->remote_dst_ip, &vxlan_info->peer_dst_ip);
-
-       memcpy(vxlan_info->local_dst_mac, parms->local_dst_mac, ETH_ALEN);
-       memcpy(vxlan_info->peer_dst_mac, parms->remote_dst_mac, ETH_ALEN);
-
-       /* The interface may change for Vxlan BFD sessions, so update
-        * the local mac and ifindex
-        */
-       bfd->ifindex = sess_parms->ifindex;
-       memcpy(bfd->local_mac, sess_parms->local_mac, sizeof(bfd->local_mac));
-}
-#endif /* VxLAN support */
-
 int bfd_xmt_cb(struct thread *t)
 {
        struct bfd_session *bs = THREAD_ARG(t);
@@ -535,8 +508,6 @@ static int bfd_session_update(struct bfd_session *bs, struct bfd_peer_cfg *bpc)
 
        _bfd_session_update(bs, bpc);
 
-       /* TODO add VxLAN support. */
-
        control_notify_config(BCM_NOTIFY_CONFIG_UPDATE, bs);
 
        return 0;
@@ -606,9 +577,6 @@ struct bfd_session *ptm_bfd_sess_new(struct bfd_peer_cfg *bpc)
                ptm_bfd_fetch_local_mac(bpc->bpc_localif, bfd->local_mac);
        }
 
-       if (bpc->bpc_has_vxlan)
-               BFD_SET_FLAG(bfd->flags, BFD_SESS_FLAG_VXLAN);
-
        if (bpc->bpc_ipv4 == false) {
                BFD_SET_FLAG(bfd->flags, BFD_SESS_FLAG_IPV6);
 
@@ -644,30 +612,13 @@ struct bfd_session *ptm_bfd_sess_new(struct bfd_peer_cfg *bpc)
                bfd_mhop_insert(bfd);
        } else {
                bfd->shop.peer = bpc->bpc_peer;
-               if (!bpc->bpc_has_vxlan && bpc->bpc_has_localif)
+               if (bpc->bpc_has_localif)
                        strlcpy(bfd->shop.port_name, bpc->bpc_localif,
                                sizeof(bfd->shop.port_name));
 
                bfd_shop_insert(bfd);
        }
 
-       if (BFD_CHECK_FLAG(bfd->flags, BFD_SESS_FLAG_VXLAN)) {
-               static uint8_t bfd_def_vxlan_dmac[] = {0x00, 0x23, 0x20,
-                                                      0x00, 0x00, 0x01};
-               memcpy(bfd->peer_mac, bfd_def_vxlan_dmac,
-                      sizeof(bfd_def_vxlan_dmac));
-       }
-#if 0 /* TODO */
-       else if (event->rmac) {
-               if (sscanf(event->rmac, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx",
-                   &bfd->peer_mac[0], &bfd->peer_mac[1], &bfd->peer_mac[2],
-                   &bfd->peer_mac[3], &bfd->peer_mac[4], &bfd->peer_mac[5])
-                   != 6)
-                       DLOG("%s: Assigning remote mac = %s", __func__,
-                            event->rmac);
-       }
-#endif
-
        /*
         * XXX: session update triggers echo start, so we must have our
         * discriminator ID set first.
index 67f9115a5d344fc7f94afbc11211bef6494d3255..ef2b5b21f92be270fe2b6897e3d690b0461f02e0 100644 (file)
@@ -137,13 +137,9 @@ struct bfd_echo_pkt {
 #define IP_HDR_LEN 20
 #define UDP_HDR_LEN 8
 #define ETH_HDR_LEN 14
-#define VXLAN_HDR_LEN 8
 #define HEADERS_MIN_LEN (ETH_HDR_LEN + IP_HDR_LEN + UDP_HDR_LEN)
 #define BFD_ECHO_PKT_TOT_LEN                                                   \
        ((int)(ETH_HDR_LEN + IP_HDR_LEN + UDP_HDR_LEN + BFD_ECHO_PKT_LEN))
-#define BFD_VXLAN_PKT_TOT_LEN                                                  \
-       ((int)(VXLAN_HDR_LEN + ETH_HDR_LEN + IP_HDR_LEN + UDP_HDR_LEN          \
-              + BFD_CTRL_PKT_LEN))
 #define BFD_RX_BUF_LEN 160
 
 /* BFD session flags */
@@ -154,9 +150,6 @@ enum bfd_session_flags {
                                             * actively
                                             */
        BFD_SESS_FLAG_MH = 1 << 2,        /* BFD Multi-hop session */
-       BFD_SESS_FLAG_VXLAN = 1 << 3,       /* BFD Multi-hop session which is
-                                            * used to monitor vxlan tunnel
-                                            */
        BFD_SESS_FLAG_IPV6 = 1 << 4,    /* BFD IPv6 session */
        BFD_SESS_FLAG_SEND_EVT_ACTIVE = 1 << 5, /* send event timer active */
        BFD_SESS_FLAG_SEND_EVT_IGNORE = 1 << 6, /* ignore send event when timer
@@ -191,18 +184,6 @@ struct bfd_session_stats {
        uint64_t znotification;
 };
 
-struct bfd_session_vxlan_info {
-       uint32_t vnid;
-       uint32_t decay_min_rx;
-       uint8_t forwarding_if_rx;
-       uint8_t cpath_down;
-       uint8_t check_tnl_key;
-       uint8_t local_dst_mac[ETHERNET_ADDRESS_LENGTH];
-       uint8_t peer_dst_mac[ETHERNET_ADDRESS_LENGTH];
-       struct in_addr local_dst_ip;
-       struct in_addr peer_dst_ip;
-};
-
 /* bfd_session shortcut label forwarding. */
 struct peer_label;
 
@@ -258,7 +239,6 @@ struct bfd_session {
                                                 * which will be transmitted
                                                 */
        struct bfd_session_stats stats;
-       struct bfd_session_vxlan_info vxlan_info;
 
        struct timeval uptime;   /* last up time */
        struct timeval downtime; /* last down time */
@@ -407,7 +387,6 @@ struct bfd_global {
        int bg_shop6;
        int bg_mhop6;
        int bg_echo;
-       int bg_vxlan;
        struct thread *bg_ev[6];
 
        int bg_csock;
@@ -617,7 +596,6 @@ int ptm_bfd_fetch_ifindex(const char *ifname);
 void ptm_bfd_fetch_local_mac(const char *ifname, uint8_t *mac);
 void fetch_portname_from_ifindex(int ifindex, char *ifname, size_t ifnamelen);
 int ptm_bfd_echo_sock_init(void);
-int ptm_bfd_vxlan_sock_init(void);
 #endif /* BFD_LINUX || BFD_BSD */
 
 #ifdef BFD_LINUX
index 09f95907f6110b3443d0ca6ecef082ed49d3bdc1..a2f52364ae82c7a624f943ccb20682f804fd0294 100644 (file)
 /*
  * Definitions
  */
-
-/* iov for BFD control frames */
-#define CMSG_HDR_LEN sizeof(struct cmsghdr)
-#define CMSG_TTL_LEN (CMSG_HDR_LEN + sizeof(uint32_t))
-#define CMSG_IN_PKT_INFO_LEN (CMSG_HDR_LEN + sizeof(struct in_pktinfo) + 4)
-#define CMSG_IN6_PKT_INFO_LEN                                                  \
-       (CMSG_HDR_LEN + sizeof(struct in6_addr) + sizeof(int) + 4)
-
 struct bfd_raw_echo_pkt {
 #ifdef BFD_LINUX
        struct iphdr ip;
@@ -59,26 +51,12 @@ struct bfd_raw_echo_pkt {
        struct bfd_echo_pkt data;
 };
 
-#if 0 /* TODO: VxLAN support. */
-struct bfd_raw_ctrl_pkt {
-       struct iphdr ip;
-       struct udphdr udp;
-       struct bfd_pkt data;
-};
-#endif
-
-struct vxlan_hdr {
-       uint32_t flags;
-       uint32_t vnid;
-};
-
 #define IP_ECHO_PKT_LEN (IP_HDR_LEN + UDP_HDR_LEN + BFD_ECHO_PKT_LEN)
 #define UDP_ECHO_PKT_LEN (UDP_HDR_LEN + BFD_ECHO_PKT_LEN)
-#define IP_CTRL_PKT_LEN (IP_HDR_LEN + UDP_HDR_LEN + BFD_PKT_LEN)
-#define UDP_CTRL_PKT_LEN (UDP_HDR_LEN + BFD_PKT_LEN)
 
 static uint8_t msgbuf[BFD_PKT_LEN];
 
+
 /*
  * Prototypes
  */
@@ -86,11 +64,7 @@ static uint16_t ptm_bfd_gen_IP_ID(struct bfd_session *bfd);
 static void ptm_bfd_echo_pkt_create(struct bfd_session *bfd);
 static int ptm_bfd_echo_loopback(uint8_t *pkt, int pkt_len, struct sockaddr *ss,
                                 socklen_t sslen);
-static void ptm_bfd_vxlan_pkt_snd(struct bfd_session *bfd, int fbit);
 static int ptm_bfd_process_echo_pkt(int s);
-static bool
-ptm_bfd_validate_vxlan_pkt(struct bfd_session *bfd,
-                          struct bfd_session_vxlan_info *vxlan_info);
 
 static void bfd_sd_reschedule(int sd);
 static ssize_t bfd_recv_ipv4(int sd, bool is_mhop, char *port, size_t portlen,
@@ -166,10 +140,7 @@ static int _ptm_bfd_send(struct bfd_session *bs, bool use_layer2,
                sa = (struct sockaddr *)&dll;
                slen = sizeof(dll);
 #else
-               /*
-                * TODO: implement layer 2 send for *BSDs. This is
-                * needed for VxLAN.
-                */
+               /* TODO: implement layer 2 send for *BSDs. */
                log_warning("packet-send: not implemented");
                return -1;
 #endif
@@ -396,86 +367,6 @@ static int ptm_bfd_echo_loopback(uint8_t *pkt, int pkt_len, struct sockaddr *ss,
        return 0;
 }
 
-static void ptm_bfd_vxlan_pkt_snd(struct bfd_session *bfd
-                                 __attribute__((__unused__)),
-                                 int fbit __attribute__((__unused__)))
-{
-#if 0 /* TODO: VxLAN support. */
-       struct bfd_raw_ctrl_pkt cp;
-       uint8_t vxlan_pkt[BFD_VXLAN_PKT_TOT_LEN];
-       uint8_t *pkt = vxlan_pkt;
-       struct sockaddr_in sin;
-       struct vxlan_hdr *vhdr;
-
-       memset(vxlan_pkt, 0, sizeof(vxlan_pkt));
-       memset(&cp, 0, sizeof(cp));
-
-       /* Construct VxLAN header information */
-       vhdr = (struct vxlan_hdr *)pkt;
-       vhdr->flags = htonl(0x08000000);
-       vhdr->vnid = htonl(bfd->vxlan_info.vnid << 8);
-       pkt += VXLAN_HDR_LEN;
-
-       /* Construct ethernet header information */
-       memcpy(pkt, bfd->vxlan_info.peer_dst_mac, ETHERNET_ADDRESS_LENGTH);
-       pkt = pkt + ETHERNET_ADDRESS_LENGTH;
-       memcpy(pkt, bfd->vxlan_info.local_dst_mac, ETHERNET_ADDRESS_LENGTH);
-       pkt = pkt + ETHERNET_ADDRESS_LENGTH;
-       pkt[0] = ETH_P_IP / 256;
-       pkt[1] = ETH_P_IP % 256;
-       pkt += 2;
-
-       /* Construct IP header information */
-       cp.ip.version = 4;
-       cp.ip.ihl = 5;
-       cp.ip.tos = 0;
-       cp.ip.tot_len = htons(IP_CTRL_PKT_LEN);
-       cp.ip.id = ptm_bfd_gen_IP_ID(bfd);
-       cp.ip.frag_off = 0;
-       cp.ip.ttl = BFD_TTL_VAL;
-       cp.ip.protocol = IPPROTO_UDP;
-       cp.ip.daddr = bfd->vxlan_info.peer_dst_ip.s_addr;
-       cp.ip.saddr = bfd->vxlan_info.local_dst_ip.s_addr;
-       cp.ip.check = checksum((uint16_t *)&cp.ip, IP_HDR_LEN);
-
-       /* Construct UDP header information */
-       cp.udp.source = htons(BFD_DEFDESTPORT);
-       cp.udp.dest = htons(BFD_DEFDESTPORT);
-       cp.udp.len = htons(UDP_CTRL_PKT_LEN);
-
-       /* Construct BFD control packet information */
-       cp.data.diag = bfd->local_diag;
-       BFD_SETVER(cp.data.diag, BFD_VERSION);
-       BFD_SETSTATE(cp.data.flags, bfd->ses_state);
-       BFD_SETDEMANDBIT(cp.data.flags, BFD_DEF_DEMAND);
-       BFD_SETPBIT(cp.data.flags, bfd->polling);
-       BFD_SETFBIT(cp.data.flags, fbit);
-       cp.data.detect_mult = bfd->detect_mult;
-       cp.data.len = BFD_PKT_LEN;
-       cp.data.discrs.my_discr = htonl(bfd->discrs.my_discr);
-       cp.data.discrs.remote_discr = htonl(bfd->discrs.remote_discr);
-       cp.data.timers.desired_min_tx = htonl(bfd->timers.desired_min_tx);
-       cp.data.timers.required_min_rx = htonl(bfd->timers.required_min_rx);
-       cp.data.timers.required_min_echo = htonl(bfd->timers.required_min_echo);
-
-       cp.udp.check =
-               udp4_checksum(&cp.ip, (uint8_t *)&cp.udp, UDP_CTRL_PKT_LEN);
-
-       memcpy(pkt, &cp, sizeof(cp));
-       sin.sin_family = AF_INET;
-       sin.sin_addr = bfd->shop.peer.sa_sin.sin_addr;
-       sin.sin_port = htons(4789);
-
-       if (sendto(bfd->sock, vxlan_pkt, BFD_VXLAN_PKT_TOT_LEN, 0,
-                  (struct sockaddr *)&sin, sizeof(struct sockaddr_in))
-           < 0) {
-               ERRLOG("Error sending vxlan bfd pkt: %s", strerror(errno));
-       } else {
-               bfd->stats.tx_ctrl_pkt++;
-       }
-#endif
-}
-
 static int ptm_bfd_process_echo_pkt(int s)
 {
        uint32_t my_discr = 0;
@@ -570,14 +461,6 @@ void ptm_bfd_snd(struct bfd_session *bfd, int fbit)
 {
        struct bfd_pkt cp;
 
-       /* if the BFD session is for VxLAN tunnel, then construct and
-        * send bfd raw packet
-        */
-       if (BFD_CHECK_FLAG(bfd->flags, BFD_SESS_FLAG_VXLAN)) {
-               ptm_bfd_vxlan_pkt_snd(bfd, fbit);
-               return;
-       }
-
        /* Set fields according to section 6.5.7 */
        cp.diag = bfd->local_diag;
        BFD_SETVER(cp.diag, BFD_VERSION);
@@ -607,88 +490,6 @@ void ptm_bfd_snd(struct bfd_session *bfd, int fbit)
        bfd->stats.tx_ctrl_pkt++;
 }
 
-#if 0  /* TODO VxLAN Support */
-static struct bfd_pkt *
-ptm_bfd_process_vxlan_pkt(int s, ptm_sockevent_e se, void *udata, int *ifindex,
-                         struct sockaddr_in *sin,
-                         struct bfd_session_vxlan_info_t *vxlan_info,
-                         uint8_t *rx_pkt, int *mlen)
-{
-       struct sockaddr_ll sll;
-       uint32_t from_len = sizeof(struct sockaddr_ll);
-       struct bfd_raw_ctrl_pkt *cp;
-       uint8_t *pkt = rx_pkt;
-       struct iphdr *iph;
-       struct ethhdr *inner_ethh;
-
-       *mlen = recvfrom(s, rx_pkt, BFD_RX_BUF_LEN, MSG_DONTWAIT,
-                        (struct sockaddr *)&sll, &from_len);
-
-       if (*mlen < 0) {
-               if (errno != EAGAIN)
-                       ERRLOG("Error receiving from BFD Vxlan socket %d: %m",
-                              s);
-               return NULL;
-       }
-
-       iph = (struct iphdr *)(pkt + ETH_HDR_LEN);
-       pkt = pkt + ETH_HDR_LEN + IP_HDR_LEN + UDP_HDR_LEN;
-       vxlan_info->vnid = ntohl(*((int *)(pkt + 4)));
-       vxlan_info->vnid = vxlan_info->vnid >> 8;
-
-       pkt = pkt + VXLAN_HDR_LEN;
-       inner_ethh = (struct ethhdr *)pkt;
-
-       cp = (struct bfd_raw_ctrl_pkt *)(pkt + ETH_HDR_LEN);
-
-       /* Discard the non BFD packets */
-       if (ntohs(cp->udp.dest) != BFD_DEFDESTPORT)
-               return NULL;
-
-       *ifindex = sll.sll_ifindex;
-       sin->sin_addr.s_addr = iph->saddr;
-       sin->sin_port = ntohs(cp->udp.dest);
-
-       vxlan_info->local_dst_ip.s_addr = cp->ip.daddr;
-       memcpy(vxlan_info->local_dst_mac, inner_ethh->h_dest,
-              ETHERNET_ADDRESS_LENGTH);
-
-       return &cp->data;
-}
-#endif /* VxLAN */
-
-static bool
-ptm_bfd_validate_vxlan_pkt(struct bfd_session *bfd,
-                          struct bfd_session_vxlan_info *vxlan_info)
-{
-       if (bfd->vxlan_info.check_tnl_key && (vxlan_info->vnid != 0)) {
-               log_error("vxlan-packet: vnid not zero: %d", vxlan_info->vnid);
-               return false;
-       }
-
-       if (bfd->vxlan_info.local_dst_ip.s_addr
-           != vxlan_info->local_dst_ip.s_addr) {
-               log_error("vxlan-packet: wrong inner destination",
-                         inet_ntoa(vxlan_info->local_dst_ip));
-               return false;
-       }
-
-       if (memcmp(bfd->vxlan_info.local_dst_mac, vxlan_info->local_dst_mac,
-                  ETHERNET_ADDRESS_LENGTH)) {
-               log_error(
-                       "vxlan-packet: wrong inner mac: %02x:%02x:%02x:%02x:%02x:%02x",
-                       vxlan_info->local_dst_mac[0],
-                       vxlan_info->local_dst_mac[1],
-                       vxlan_info->local_dst_mac[2],
-                       vxlan_info->local_dst_mac[3],
-                       vxlan_info->local_dst_mac[4],
-                       vxlan_info->local_dst_mac[5]);
-               return false;
-       }
-
-       return true;
-}
-
 static ssize_t bfd_recv_ipv4(int sd, bool is_mhop, char *port, size_t portlen,
                             char *vrfname, size_t vrfnamelen,
                             struct sockaddr_any *local,
@@ -904,10 +705,6 @@ static void bfd_sd_reschedule(int sd)
                bglobal.bg_ev[4] = NULL;
                thread_add_read(master, bfd_recv_cb, NULL, bglobal.bg_echo,
                                &bglobal.bg_ev[4]);
-       } else if (sd == bglobal.bg_vxlan) {
-               bglobal.bg_ev[5] = NULL;
-               thread_add_read(master, bfd_recv_cb, NULL, bglobal.bg_vxlan,
-                               &bglobal.bg_ev[5]);
        }
 }
 
@@ -952,12 +749,11 @@ int bfd_recv_cb(struct thread *t)
        int sd = THREAD_FD(t);
        struct bfd_session *bfd;
        struct bfd_pkt *cp;
-       bool is_mhop, is_vxlan;
+       bool is_mhop;
        ssize_t mlen = 0;
        uint32_t oldEchoXmt_TO, oldXmtTime;
        struct sockaddr_any local, peer;
        char port[MAXNAMELEN + 1], vrfname[MAXNAMELEN + 1];
-       struct bfd_session_vxlan_info vxlan_info;
 
        /* Schedule next read. */
        bfd_sd_reschedule(sd);
@@ -975,7 +771,7 @@ int bfd_recv_cb(struct thread *t)
        memset(&peer, 0, sizeof(peer));
 
        /* Handle control packets. */
-       is_mhop = is_vxlan = false;
+       is_mhop = false;
        if (sd == bglobal.bg_shop || sd == bglobal.bg_mhop) {
                is_mhop = sd == bglobal.bg_mhop;
                mlen = bfd_recv_ipv4(sd, is_mhop, port, sizeof(port), vrfname,
@@ -985,18 +781,6 @@ int bfd_recv_cb(struct thread *t)
                mlen = bfd_recv_ipv6(sd, is_mhop, port, sizeof(port), vrfname,
                                     sizeof(vrfname), &local, &peer);
        }
-#if 0 /* TODO vxlan handling */
-       cp = ptm_bfd_process_vxlan_pkt(s, se, udata, &local_ifindex,
-                                      &sin, &vxlan_info, rx_pkt, &mlen);
-       if (!cp)
-               return -1;
-
-       is_vxlan = true;
-       /* keep in network-byte order */
-       peer.ip4_addr.s_addr = sin.sin_addr.s_addr;
-       peer.family = AF_INET;
-       strcpy(peer_addr, inet_ntoa(sin.sin_addr));
-#endif
 
        /* Implement RFC 5880 6.8.6 */
        if (mlen < BFD_PKT_LEN) {
@@ -1044,10 +828,6 @@ int bfd_recv_cb(struct thread *t)
                return 0;
        }
 
-       /* Handle VxLAN cases. */
-       if (is_vxlan && !ptm_bfd_validate_vxlan_pkt(bfd, &vxlan_info))
-               return 0;
-
        bfd->stats.rx_ctrl_pkt++;
 
        /*
@@ -1330,12 +1110,10 @@ int bp_peer_socket(struct bfd_peer_cfg *bpc)
                return -1;
        }
 
-       if (!bpc->bpc_has_vxlan) {
-               /* Set TTL to 255 for all transmitted packets */
-               if (bp_set_ttl(sd, BFD_TTL_VAL) != 0) {
-                       close(sd);
-                       return -1;
-               }
+       /* Set TTL to 255 for all transmitted packets */
+       if (bp_set_ttl(sd, BFD_TTL_VAL) != 0) {
+               close(sd);
+               return -1;
        }
 
        /* Set TOS to CS6 for all transmitted packets */
@@ -1344,8 +1122,7 @@ int bp_peer_socket(struct bfd_peer_cfg *bpc)
                return -1;
        }
 
-       /* dont bind-to-device incase of vxlan */
-       if (!bpc->bpc_has_vxlan && bpc->bpc_has_localif) {
+       if (bpc->bpc_has_localif) {
                if (bp_bind_dev(sd, bpc->bpc_localif) != 0) {
                        close(sd);
                        return -1;
@@ -1364,7 +1141,7 @@ int bp_peer_socket(struct bfd_peer_cfg *bpc)
 #ifdef HAVE_STRUCT_SOCKADDR_SA_LEN
        sin.sin_len = sizeof(sin);
 #endif /* HAVE_STRUCT_SOCKADDR_SA_LEN */
-       if (bpc->bpc_mhop || bpc->bpc_has_vxlan)
+       if (bpc->bpc_mhop)
                sin.sin_addr = bpc->bpc_local.sa_sin.sin_addr;
        else
                sin.sin_addr.s_addr = INADDR_ANY;
@@ -1404,12 +1181,10 @@ int bp_peer_socketv6(struct bfd_peer_cfg *bpc)
                return -1;
        }
 
-       if (!bpc->bpc_has_vxlan) {
-               /* Set TTL to 255 for all transmitted packets */
-               if (bp_set_ttlv6(sd, BFD_TTL_VAL) != 0) {
-                       close(sd);
-                       return -1;
-               }
+       /* Set TTL to 255 for all transmitted packets */
+       if (bp_set_ttlv6(sd, BFD_TTL_VAL) != 0) {
+               close(sd);
+               return -1;
        }
 
        /* Set TOS to CS6 for all transmitted packets */
index 940efd161447bbcb46fb46c83d1795478934e88f..0da1ca8df6c7e14cbe70262f8a7e112eefcd165a 100644 (file)
@@ -66,9 +66,6 @@ struct bfd_peer_cfg {
        bool bpc_has_label;
        char bpc_label[MAXNAMELEN];
 
-       bool bpc_has_vxlan;
-       unsigned int bpc_vxlan;
-
        bool bpc_has_localif;
        char bpc_localif[MAXNAMELEN + 1];
 
index 144619088d3a3ca733cb01bbaa7b087825611499..44a29861b709fd60d3a53ef68a8a7568743b8d2d 100644 (file)
@@ -90,7 +90,6 @@ static void sigterm_handler(void)
        socket_close(&bglobal.bg_mhop);
        socket_close(&bglobal.bg_shop6);
        socket_close(&bglobal.bg_mhop6);
-       socket_close(&bglobal.bg_vxlan);
 
        /* Terminate and free() FRR related memory. */
        frr_fini();
@@ -155,7 +154,6 @@ static void bg_init(void)
        bglobal.bg_shop6 = bp_udp6_shop();
        bglobal.bg_mhop6 = bp_udp6_mhop();
        bglobal.bg_echo = ptm_bfd_echo_sock_init();
-       bglobal.bg_vxlan = ptm_bfd_vxlan_sock_init();
 }
 
 int main(int argc, char *argv[])
@@ -216,10 +214,6 @@ int main(int argc, char *argv[])
                        &bglobal.bg_ev[3]);
        thread_add_read(master, bfd_recv_cb, NULL, bglobal.bg_echo,
                        &bglobal.bg_ev[4]);
-#if 0 /* TODO VxLAN support. */
-       thread_add_read(master, bfd_recv_cb, NULL, bglobal.bg_vxlan,
-                       &bglobal.bg_ev[5]);
-#endif
        thread_add_read(master, control_accept, NULL, bglobal.bg_csock,
                        &bglobal.bg_csockev);
 
index ae6081f01ad360f18c50dff55e06eddaf2f38b35..1c6d03195c8a5754f99fe9f5a4f63e38357bb220 100644 (file)
@@ -827,7 +827,7 @@ DEFPY(bfd_show_peers_counters, bfd_show_peers_counters_cmd,
  * Configuration rules:
  *
  * Single hop:
- * peer + (optional vxlan or interface name)
+ * peer + (interface name)
  *
  * Multi hop:
  * peer + local + (optional vrf)
@@ -896,23 +896,6 @@ static int bfd_configure_peer(struct bfd_peer_cfg *bpc, bool mhop,
 
        bpc->bpc_mhop = mhop;
 
-#if 0
-       /* Handle VxLAN configuration. */
-       if (vxlan >= 0) {
-               if (vxlan > ((1 << 24) - 1)) {
-                       snprintf(ebuf, ebuflen, "invalid VxLAN %d", vxlan);
-                       return -1;
-               }
-               if (bpc->bpc_mhop) {
-                       snprintf(ebuf, ebuflen,
-                                "multihop doesn't accept VxLAN");
-                       return -1;
-               }
-
-               bpc->bpc_vxlan = vxlan;
-       }
-#endif /* VxLAN */
-
        /* Handle interface specification configuration. */
        if (ifname) {
                if (bpc->bpc_mhop) {
index 34a3a1a801e22268954488f14553221ae44d6ac7..632353c7071c449a7cf75e1623f520f63e8c7a3b 100644 (file)
@@ -250,12 +250,6 @@ ssize_t bsd_echo_sock_read(int sd, uint8_t *buf, ssize_t *buflen,
        return 0;
 }
 
-int ptm_bfd_vxlan_sock_init(void)
-{
-       /* TODO: not supported yet. */
-       return -1;
-}
-
 int bp_bind_dev(int sd, const char *dev)
 {
        /*
index 0e0d8b7d706ff0238c6b89db70c9a94e4663beba..06089780c6ba8c163d2e8db142f7076c5607cc02 100644 (file)
@@ -218,10 +218,6 @@ static int parse_peer_config(struct json_object *jo, struct bfd_peer_cfg *bpc)
                        } else {
                                log_debug("\tlocal-interface: %s", sval);
                        }
-               } else if (strcmp(key, "vxlan") == 0) {
-                       bpc->bpc_vxlan = json_object_get_int64(jo_val);
-                       bpc->bpc_has_vxlan = true;
-                       log_debug("\tvxlan: %ld", bpc->bpc_vxlan);
                } else if (strcmp(key, "vrf-name") == 0) {
                        bpc->bpc_has_vrfname = true;
                        sval = json_object_get_string(jo_val);
index 5f24ef4d19cc573e122806f2c860e055760322a9..442958ead9c5fdf1b9fe60aeccfbb2f80fa168a8 100644 (file)
@@ -52,20 +52,6 @@ static struct sock_filter bfd_echo_filter[] = {
        {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.
@@ -152,31 +138,6 @@ int ptm_bfd_echo_sock_init(void)
        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__)))
 {