mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-05 01:14:48 +00:00
Merge remote-tracking branch 'origin/master' into babel
This commit is contained in:
commit
293067f086
33
COMMUNITY.md
33
COMMUNITY.md
@ -230,23 +230,22 @@ form of the header is as follows:
|
||||
|
||||
```
|
||||
/*
|
||||
Title/Function of file
|
||||
Copyright (C) 2016 Author’s Name
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; see the file COPYING; if not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
MA 02110-1301 USA
|
||||
* Title/Function of file
|
||||
* Copyright (C) YEAR Author’s Name
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation; either version 2 of the License, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
32
COPYING
32
COPYING
@ -1,12 +1,12 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
675 Mass Ave, Cambridge, MA 02139, USA
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
@ -15,7 +15,7 @@ software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
@ -56,7 +56,7 @@ patent must be licensed for everyone's free use or not licensed at all.
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
@ -255,7 +255,7 @@ make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
@ -277,9 +277,9 @@ YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Appendix: How to Apply These Terms to Your New Programs
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
@ -291,7 +291,7 @@ convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) 19yy <name of author>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -303,16 +303,16 @@ the "copyright" line and a pointer to where the full notice is found.
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) 19yy name of author
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
@ -335,5 +335,5 @@ necessary. Here is a sample; alter the names:
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License.
|
||||
|
@ -80,7 +80,7 @@ libbgp_a_SOURCES = \
|
||||
bgp_mplsvpn.c bgp_nexthop.c \
|
||||
bgp_damp.c bgp_table.c bgp_advertise.c bgp_vty.c bgp_mpath.c \
|
||||
bgp_nht.c bgp_updgrp.c bgp_updgrp_packet.c bgp_updgrp_adv.c bgp_bfd.c \
|
||||
bgp_encap.c bgp_encap_tlv.c $(BGP_VNC_RFAPI_SRC) bgp_attr_evpn.c \
|
||||
bgp_encap_tlv.c $(BGP_VNC_RFAPI_SRC) bgp_attr_evpn.c \
|
||||
bgp_evpn.c bgp_evpn_vty.c bgp_vpn.c bgp_label.c
|
||||
|
||||
noinst_HEADERS = \
|
||||
@ -91,7 +91,7 @@ noinst_HEADERS = \
|
||||
bgp_ecommunity.h bgp_lcommunity.h \
|
||||
bgp_mplsvpn.h bgp_nexthop.h bgp_damp.h bgp_table.h \
|
||||
bgp_advertise.h bgp_vty.h bgp_mpath.h bgp_nht.h \
|
||||
bgp_updgrp.h bgp_bfd.h bgp_encap.h bgp_encap_tlv.h bgp_encap_types.h \
|
||||
bgp_updgrp.h bgp_bfd.h bgp_encap_tlv.h bgp_encap_types.h \
|
||||
$(BGP_VNC_RFAPI_HD) bgp_attr_evpn.h bgp_evpn.h bgp_evpn_vty.h \
|
||||
bgp_vpn.h bgp_label.h
|
||||
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP advertisement and adjacency
|
||||
Copyright (C) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP advertisement and adjacency
|
||||
Copyright (C) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_ADVERTISE_H
|
||||
#define _QUAGGA_BGP_ADVERTISE_H
|
||||
|
@ -1,23 +1,23 @@
|
||||
/* AS path management routines.
|
||||
Copyright (C) 1996, 97, 98, 99 Kunihiro Ishiguro
|
||||
Copyright (C) 2005 Sun Microsystems, Inc.
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1996, 97, 98, 99 Kunihiro Ishiguro
|
||||
* Copyright (C) 2005 Sun Microsystems, Inc.
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* AS path related definitions.
|
||||
Copyright (C) 1997, 98, 99 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1997, 98, 99 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_ASPATH_H
|
||||
#define _QUAGGA_BGP_ASPATH_H
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP attributes management routines.
|
||||
Copyright (C) 1996, 97, 98, 1999 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1996, 97, 98, 1999 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
@ -968,26 +968,6 @@ bgp_attr_default_set (struct attr *attr, u_char origin)
|
||||
return attr;
|
||||
}
|
||||
|
||||
|
||||
/* Make network statement's attribute. */
|
||||
struct attr *
|
||||
bgp_attr_default_intern (u_char origin)
|
||||
{
|
||||
struct attr attr;
|
||||
struct attr *new;
|
||||
|
||||
memset (&attr, 0, sizeof (struct attr));
|
||||
bgp_attr_extra_get (&attr);
|
||||
|
||||
bgp_attr_default_set(&attr, origin);
|
||||
|
||||
new = bgp_attr_intern (&attr);
|
||||
bgp_attr_extra_free (&attr);
|
||||
|
||||
aspath_unintern (&new->aspath);
|
||||
return new;
|
||||
}
|
||||
|
||||
/* Create the attributes for an aggregate */
|
||||
struct attr *
|
||||
bgp_attr_aggregate_intern (struct bgp *bgp, u_char origin,
|
||||
@ -1500,8 +1480,7 @@ bgp_attr_as4_path (struct bgp_attr_parser_args *args, struct aspath **as4_path)
|
||||
}
|
||||
|
||||
/* Set aspath attribute flag. */
|
||||
if (as4_path)
|
||||
attr->flag |= ATTR_FLAG_BIT (BGP_ATTR_AS4_PATH);
|
||||
attr->flag |= ATTR_FLAG_BIT (BGP_ATTR_AS4_PATH);
|
||||
|
||||
return BGP_ATTR_PARSE_PROCEED;
|
||||
}
|
||||
@ -2827,13 +2806,15 @@ bgp_attr_parse (struct peer *peer, struct attr *attr, bgp_size_t size,
|
||||
}
|
||||
|
||||
size_t
|
||||
bgp_packet_mpattr_start (struct stream *s, afi_t afi, safi_t safi, afi_t nh_afi,
|
||||
bgp_packet_mpattr_start (struct stream *s, struct peer *peer,
|
||||
afi_t afi, safi_t safi,
|
||||
struct bpacket_attr_vec_arr *vecarr,
|
||||
struct attr *attr)
|
||||
{
|
||||
size_t sizep;
|
||||
iana_afi_t pkt_afi;
|
||||
safi_t pkt_safi;
|
||||
afi_t nh_afi;
|
||||
|
||||
/* Set extended bit always to encode the attribute length as 2 bytes */
|
||||
stream_putc (s, BGP_ATTR_FLAG_OPTIONAL|BGP_ATTR_FLAG_EXTLEN);
|
||||
@ -2847,12 +2828,21 @@ bgp_packet_mpattr_start (struct stream *s, afi_t afi, safi_t safi, afi_t nh_afi,
|
||||
|
||||
stream_putw (s, pkt_afi); /* AFI */
|
||||
stream_putc (s, pkt_safi); /* SAFI */
|
||||
if (afi == AFI_L2VPN)
|
||||
nh_afi = AFI_L2VPN;
|
||||
else if (nh_afi == AFI_MAX)
|
||||
nh_afi = BGP_NEXTHOP_AFI_FROM_NHLEN(attr->extra->mp_nexthop_len);
|
||||
|
||||
/* Nexthop AFI */
|
||||
if (peer_cap_enhe(peer, afi, safi)) {
|
||||
nh_afi = AFI_IP6;
|
||||
} else {
|
||||
if (afi == AFI_L2VPN)
|
||||
nh_afi = AFI_L2VPN;
|
||||
else if (safi == SAFI_LABELED_UNICAST)
|
||||
nh_afi = afi;
|
||||
else
|
||||
nh_afi = BGP_NEXTHOP_AFI_FROM_NHLEN(attr->extra->mp_nexthop_len);
|
||||
}
|
||||
|
||||
/* Nexthop */
|
||||
bpacket_attr_vec_arr_set_vec (vecarr, BGP_ATTR_VEC_NH, s, attr);
|
||||
switch (nh_afi)
|
||||
{
|
||||
case AFI_IP:
|
||||
@ -2861,12 +2851,10 @@ bgp_packet_mpattr_start (struct stream *s, afi_t afi, safi_t safi, afi_t nh_afi,
|
||||
case SAFI_UNICAST:
|
||||
case SAFI_MULTICAST:
|
||||
case SAFI_LABELED_UNICAST:
|
||||
bpacket_attr_vec_arr_set_vec (vecarr, BGP_ATTR_VEC_NH, s, attr);
|
||||
stream_putc (s, 4);
|
||||
stream_put_ipv4 (s, attr->nexthop.s_addr);
|
||||
break;
|
||||
case SAFI_MPLS_VPN:
|
||||
bpacket_attr_vec_arr_set_vec (vecarr, BGP_ATTR_VEC_NH, s, attr);
|
||||
stream_putc (s, 12);
|
||||
stream_putl (s, 0); /* RD = 0, per RFC */
|
||||
stream_putl (s, 0);
|
||||
@ -2890,7 +2878,6 @@ bgp_packet_mpattr_start (struct stream *s, afi_t afi, safi_t safi, afi_t nh_afi,
|
||||
struct attr_extra *attre = attr->extra;
|
||||
|
||||
assert (attr->extra);
|
||||
bpacket_attr_vec_arr_set_vec (vecarr, BGP_ATTR_VEC_NH, s, attr);
|
||||
|
||||
if (attre->mp_nexthop_len == BGP_ATTR_NHLEN_IPV6_GLOBAL_AND_LL) {
|
||||
stream_putc (s, BGP_ATTR_NHLEN_IPV6_GLOBAL_AND_LL);
|
||||
@ -3041,7 +3028,8 @@ bgp_packet_mpattr_tea(
|
||||
case BGP_ATTR_ENCAP:
|
||||
attrname = "Tunnel Encap";
|
||||
subtlvs = attr->extra->encap_subtlvs;
|
||||
|
||||
if (subtlvs == NULL) /* nothing to do */
|
||||
return;
|
||||
/*
|
||||
* The tunnel encap attr has an "outer" tlv.
|
||||
* T = tunneltype,
|
||||
@ -3056,6 +3044,8 @@ bgp_packet_mpattr_tea(
|
||||
case BGP_ATTR_VNC:
|
||||
attrname = "VNC";
|
||||
subtlvs = attr->extra->vnc_subtlvs;
|
||||
if (subtlvs == NULL) /* nothing to do */
|
||||
return;
|
||||
attrlenfield = 0; /* no outer T + L */
|
||||
attrhdrlen = 2 + 2; /* subTLV T + L */
|
||||
break;
|
||||
@ -3147,10 +3137,7 @@ bgp_packet_attribute (struct bgp *bgp, struct peer *peer,
|
||||
{
|
||||
size_t mpattrlen_pos = 0;
|
||||
|
||||
mpattrlen_pos = bgp_packet_mpattr_start(s, afi, safi,
|
||||
(peer_cap_enhe(peer, afi, safi) ? AFI_IP6 :
|
||||
AFI_MAX), /* get from NH */
|
||||
vecarr, attr);
|
||||
mpattrlen_pos = bgp_packet_mpattr_start(s, peer, afi, safi, vecarr, attr);
|
||||
bgp_packet_mpattr_prefix(s, afi, safi, p, prd, tag,
|
||||
addpath_encode, addpath_tx_id, attr);
|
||||
bgp_packet_mpattr_end(s, mpattrlen_pos);
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP attributes.
|
||||
Copyright (C) 1996, 97, 98 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1996, 97, 98 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_ATTR_H
|
||||
#define _QUAGGA_BGP_ATTR_H
|
||||
@ -246,7 +246,6 @@ extern void bgp_attr_unintern_sub (struct attr *);
|
||||
extern void bgp_attr_unintern (struct attr **);
|
||||
extern void bgp_attr_flush (struct attr *);
|
||||
extern struct attr *bgp_attr_default_set (struct attr *attr, u_char);
|
||||
extern struct attr *bgp_attr_default_intern (u_char);
|
||||
extern struct attr *bgp_attr_aggregate_intern (struct bgp *, u_char,
|
||||
struct aspath *,
|
||||
struct community *, int as_set, u_char);
|
||||
@ -298,8 +297,8 @@ bgp_attr_flush_encap(struct attr *attr);
|
||||
* one for each NLRI that needs to be encoded into the UPDATE message, and
|
||||
* finally the _end() function.
|
||||
*/
|
||||
extern size_t bgp_packet_mpattr_start(struct stream *s, afi_t afi, safi_t safi,
|
||||
afi_t nh_afi,
|
||||
extern size_t bgp_packet_mpattr_start(struct stream *s, struct peer *peer,
|
||||
afi_t afi, safi_t safi,
|
||||
struct bpacket_attr_vec_arr *vecarr,
|
||||
struct attr *attr);
|
||||
extern void bgp_packet_mpattr_prefix(struct stream *s, afi_t afi, safi_t safi,
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* Ethernet-VPN Attribute handling file
|
||||
Copyright (C) 2016 6WIND
|
||||
|
||||
This file is part of FRRouting.
|
||||
|
||||
FRRouting is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
FRRouting is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with FRRouting; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 2016 6WIND
|
||||
*
|
||||
* This file is part of FRRouting.
|
||||
*
|
||||
* FRRouting is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* FRRouting is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* E-VPN attribute handling structure file
|
||||
Copyright (C) 2016 6WIND
|
||||
|
||||
This file is part of FRRouting.
|
||||
|
||||
FRRouting is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
FRRouting is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with FRRouting; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 2016 6WIND
|
||||
*
|
||||
* This file is part of FRRouting.
|
||||
*
|
||||
* FRRouting is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* FRRouting is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_ATTR_EVPN_H
|
||||
#define _QUAGGA_BGP_ATTR_EVPN_H
|
||||
|
@ -15,10 +15,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
* Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
@ -15,10 +15,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
* Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_BFD_H
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP dump to ascii converter
|
||||
Copyright (C) 1999 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1999 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP community-list and extcommunity-list.
|
||||
Copyright (C) 1999 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1999 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
@ -1158,16 +1158,13 @@ extcommunity_list_set (struct community_list_handler *ch,
|
||||
}
|
||||
}
|
||||
|
||||
if (str)
|
||||
{
|
||||
if (style == EXTCOMMUNITY_LIST_STANDARD)
|
||||
ecom = ecommunity_str2com (str, 0, 1);
|
||||
else
|
||||
regex = bgp_regcomp (str);
|
||||
if (style == EXTCOMMUNITY_LIST_STANDARD)
|
||||
ecom = ecommunity_str2com (str, 0, 1);
|
||||
else
|
||||
regex = bgp_regcomp (str);
|
||||
|
||||
if (! ecom && ! regex)
|
||||
return COMMUNITY_LIST_ERR_MALFORMED_VAL;
|
||||
}
|
||||
if (! ecom && ! regex)
|
||||
return COMMUNITY_LIST_ERR_MALFORMED_VAL;
|
||||
|
||||
if (ecom)
|
||||
ecom->str = ecommunity_ecom2str (ecom, ECOMMUNITY_FORMAT_DISPLAY, 0);
|
||||
@ -1180,8 +1177,7 @@ extcommunity_list_set (struct community_list_handler *ch,
|
||||
entry->config = ecommunity_ecom2str (ecom, ECOMMUNITY_FORMAT_COMMUNITY_LIST, 0);
|
||||
else if (regex)
|
||||
entry->config = XSTRDUP (MTYPE_COMMUNITY_LIST_CONFIG, str);
|
||||
else
|
||||
entry->config = NULL;
|
||||
|
||||
entry->u.ecom = ecom;
|
||||
entry->reg = regex;
|
||||
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP Community list.
|
||||
Copyright (C) 1999 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1999 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_CLIST_H
|
||||
#define _QUAGGA_BGP_CLIST_H
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* Community attribute related functions.
|
||||
Copyright (C) 1998, 2001 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1998, 2001 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* Community attribute related functions.
|
||||
Copyright (C) 1998 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1998 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_COMMUNITY_H
|
||||
#define _QUAGGA_BGP_COMMUNITY_H
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP flap dampening
|
||||
Copyright (C) 2001 IP Infusion Inc.
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 2001 IP Infusion Inc.
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
#include <math.h>
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP flap dampening
|
||||
Copyright (C) 2001 IP Infusion Inc.
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 2001 IP Infusion Inc.
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_DAMP_H
|
||||
#define _QUAGGA_BGP_DAMP_H
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP-4, BGP-4+ packet debug routine
|
||||
Copyright (C) 1996, 97, 99 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1996, 97, 99 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
@ -383,7 +383,7 @@ bgp_debug_peer_updout_enabled(char *host)
|
||||
|
||||
/* Dump attribute. */
|
||||
int
|
||||
bgp_dump_attr (struct peer *peer, struct attr *attr, char *buf, size_t size)
|
||||
bgp_dump_attr (struct attr *attr, char *buf, size_t size)
|
||||
{
|
||||
if (! attr)
|
||||
return 0;
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP message debug header.
|
||||
Copyright (C) 1996, 97, 98 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1996, 97, 98 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_DEBUG_H
|
||||
#define _QUAGGA_BGP_DEBUG_H
|
||||
@ -138,7 +138,7 @@ struct bgp_debug_filter
|
||||
|
||||
extern const char *bgp_type_str[];
|
||||
|
||||
extern int bgp_dump_attr (struct peer *, struct attr *, char *, size_t);
|
||||
extern int bgp_dump_attr (struct attr *, char *, size_t);
|
||||
extern int bgp_debug_peer_updout_enabled(char *host);
|
||||
extern const char *bgp_notify_code_str(char);
|
||||
extern const char *bgp_notify_subcode_str(char, char);
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP-4 dump routine
|
||||
Copyright (C) 1999 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1999 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
@ -626,7 +626,7 @@ bgp_dump_parse_time (const char *str)
|
||||
return 0;
|
||||
total += time * 60;
|
||||
time = 0;
|
||||
seen_h = 1;
|
||||
seen_m = 1;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP dump routine.
|
||||
Copyright (C) 1999 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1999 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_DUMP_H
|
||||
#define _QUAGGA_BGP_DUMP_H
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP Extended Communities Attribute
|
||||
Copyright (C) 2000 Kunihiro Ishiguro <kunihiro@zebra.org>
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 2000 Kunihiro Ishiguro <kunihiro@zebra.org>
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP Extended Communities Attribute.
|
||||
Copyright (C) 2000 Kunihiro Ishiguro <kunihiro@zebra.org>
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 2000 Kunihiro Ishiguro <kunihiro@zebra.org>
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_ECOMMUNITY_H
|
||||
#define _QUAGGA_BGP_ECOMMUNITY_H
|
||||
|
914
bgpd/bgp_encap.c
914
bgpd/bgp_encap.c
@ -1,914 +0,0 @@
|
||||
|
||||
/*
|
||||
* This file created by LabN Consulting, L.L.C.
|
||||
*
|
||||
*
|
||||
* This file is based on bgp_mplsvpn.c which is Copyright (C) 2000
|
||||
* Kunihiro Ishiguro <kunihiro@zebra.org>
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
#include "command.h"
|
||||
#include "prefix.h"
|
||||
#include "log.h"
|
||||
#include "memory.h"
|
||||
#include "stream.h"
|
||||
#include "filter.h"
|
||||
|
||||
#include "bgpd/bgpd.h"
|
||||
#include "bgpd/bgp_table.h"
|
||||
#include "bgpd/bgp_route.h"
|
||||
#include "bgpd/bgp_attr.h"
|
||||
#include "bgpd/bgp_ecommunity.h"
|
||||
#include "bgpd/bgp_lcommunity.h"
|
||||
#include "bgpd/bgp_mplsvpn.h"
|
||||
#include "bgpd/bgp_vty.h"
|
||||
#include "bgpd/bgp_encap.h"
|
||||
|
||||
#if ENABLE_BGP_VNC
|
||||
#include "bgpd/rfapi/rfapi_backend.h"
|
||||
#endif
|
||||
|
||||
static void
|
||||
ecom2prd(struct ecommunity *ecom, struct prefix_rd *prd)
|
||||
{
|
||||
int i;
|
||||
|
||||
memset(prd, 0, sizeof(struct prefix_rd));
|
||||
prd->family = AF_UNSPEC;
|
||||
prd->prefixlen = 64;
|
||||
|
||||
if (!ecom)
|
||||
return;
|
||||
|
||||
for (i = 0; i < (ecom->size * ECOMMUNITY_SIZE); i += ECOMMUNITY_SIZE) {
|
||||
|
||||
uint8_t *ep;
|
||||
|
||||
ep = ecom->val + i;
|
||||
|
||||
switch (ep[0]) {
|
||||
default:
|
||||
continue;
|
||||
|
||||
case 0x80:
|
||||
case 0x81:
|
||||
case 0x82:
|
||||
if (ep[1] == 0x0) {
|
||||
prd->val[1] = ep[0] & 0x03;
|
||||
memcpy(prd->val + 2, ep + 2, 6);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
bgp_nlri_parse_encap(
|
||||
struct peer *peer,
|
||||
struct attr *attr,
|
||||
struct bgp_nlri *packet)
|
||||
{
|
||||
u_char *pnt;
|
||||
u_char *lim;
|
||||
afi_t afi = packet->afi;
|
||||
struct prefix p;
|
||||
int psize = 0;
|
||||
int prefixlen;
|
||||
struct rd_as rd_as;
|
||||
struct rd_ip rd_ip;
|
||||
struct prefix_rd prd;
|
||||
struct ecommunity *pEcom = NULL;
|
||||
u_int16_t rdtype = 0xffff;
|
||||
char buf[BUFSIZ];
|
||||
|
||||
/* Check peer status. */
|
||||
if (peer->status != Established)
|
||||
return 0;
|
||||
|
||||
/* Make prefix_rd */
|
||||
if (attr && attr->extra && attr->extra->ecommunity)
|
||||
pEcom = attr->extra->ecommunity;
|
||||
|
||||
ecom2prd(pEcom, &prd);
|
||||
memset(&rd_as, 0, sizeof(rd_as));
|
||||
memset(&rd_ip, 0, sizeof(rd_ip));
|
||||
|
||||
if (pEcom) {
|
||||
|
||||
rdtype = (prd.val[0] << 8) | prd.val[1];
|
||||
|
||||
/* Decode RD value. */
|
||||
if (rdtype == RD_TYPE_AS)
|
||||
decode_rd_as (prd.val + 2, &rd_as);
|
||||
else if (rdtype == RD_TYPE_IP)
|
||||
decode_rd_ip (prd.val + 2, &rd_ip);
|
||||
else if (rdtype == RD_TYPE_AS4)
|
||||
decode_rd_as4 (prd.val + 2, &rd_as);
|
||||
else
|
||||
{
|
||||
zlog_err ("Invalid RD type %d", rdtype);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* NB: this code was based on the MPLS VPN code, which supported RDs.
|
||||
* For the moment we are retaining the underlying RIB structure that
|
||||
* keeps a per-RD radix tree, but since the RDs are not carried over
|
||||
* the wire, we set the RD internally to 0.
|
||||
*/
|
||||
prd.family = AF_UNSPEC;
|
||||
prd.prefixlen = 64;
|
||||
memset(prd.val, 0, sizeof(prd.val));
|
||||
|
||||
pnt = packet->nlri;
|
||||
lim = pnt + packet->length;
|
||||
|
||||
for (; pnt < lim; pnt += psize)
|
||||
{
|
||||
/* Clear prefix structure. */
|
||||
memset (&p, 0, sizeof (struct prefix));
|
||||
|
||||
/* Fetch prefix length. */
|
||||
prefixlen = *pnt++;
|
||||
p.family = afi2family(afi);
|
||||
if (p.family == 0) {
|
||||
/* bad afi, shouldn't happen */
|
||||
zlog_warn("%s: bad afi %d, dropping incoming route", __func__, afi);
|
||||
continue;
|
||||
}
|
||||
psize = PSIZE (prefixlen);
|
||||
|
||||
p.prefixlen = prefixlen;
|
||||
memcpy (&p.u.prefix, pnt, psize);
|
||||
|
||||
if (pnt + psize > lim)
|
||||
return -1;
|
||||
|
||||
|
||||
if (rdtype == RD_TYPE_AS)
|
||||
zlog_info ("rd-as %u:%u prefix %s/%d", rd_as.as, rd_as.val,
|
||||
inet_ntop (p.family, &p.u.prefix, buf, BUFSIZ),
|
||||
p.prefixlen);
|
||||
else if (rdtype == RD_TYPE_IP)
|
||||
zlog_info ("rd-ip %s:%u prefix %s/%d", inet_ntoa (rd_ip.ip),
|
||||
rd_ip.val,
|
||||
inet_ntop (p.family, &p.u.prefix, buf, BUFSIZ),
|
||||
p.prefixlen);
|
||||
else if (rdtype == RD_TYPE_AS4)
|
||||
zlog_info ("rd-as4 %u:%u prefix %s/%d", rd_as.as, rd_as.val,
|
||||
inet_ntop (p.family, &p.u.prefix, buf, BUFSIZ),
|
||||
p.prefixlen);
|
||||
else
|
||||
zlog_info ("rd unknown, default to 0:0 prefix %s/%d",
|
||||
inet_ntop (p.family, &p.u.prefix, buf, BUFSIZ),
|
||||
p.prefixlen);
|
||||
|
||||
if (attr) {
|
||||
bgp_update (peer, &p, 0, attr, afi, SAFI_ENCAP,
|
||||
ZEBRA_ROUTE_BGP, BGP_ROUTE_NORMAL, &prd, NULL, 0, NULL);
|
||||
} else {
|
||||
bgp_withdraw (peer, &p, 0, attr, afi, SAFI_ENCAP,
|
||||
ZEBRA_ROUTE_BGP, BGP_ROUTE_NORMAL, &prd, NULL, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
/* Packet length consistency check. */
|
||||
if (pnt != lim)
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* TBD: these routes should probably all be host routes */
|
||||
|
||||
/* For testing purpose, static route of ENCAP. */
|
||||
DEFUN (encap_network,
|
||||
encap_network_cmd,
|
||||
"network A.B.C.D/M rd ASN:nn_or_IP-address:nn tag WORD",
|
||||
"Specify a network to announce via BGP\n"
|
||||
"IPv4 prefix\n"
|
||||
"Specify Route Distinguisher\n"
|
||||
"ENCAP Route Distinguisher\n"
|
||||
"BGP tag\n"
|
||||
"tag value\n")
|
||||
{
|
||||
int idx_ipv4 = 1;
|
||||
int idx_rd = 3;
|
||||
int idx_word = 5;
|
||||
return bgp_static_set_safi (SAFI_ENCAP, vty, argv[idx_ipv4]->arg, argv[idx_rd]->arg, argv[idx_word]->arg,
|
||||
NULL, 0, NULL, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
/* For testing purpose, static route of ENCAP. */
|
||||
DEFUN (no_encap_network,
|
||||
no_encap_network_cmd,
|
||||
"no network A.B.C.D/M rd ASN:nn_or_IP-address:nn tag WORD",
|
||||
NO_STR
|
||||
"Specify a network to announce via BGP\n"
|
||||
"IPv4 prefix\n"
|
||||
"Specify Route Distinguisher\n"
|
||||
"ENCAP Route Distinguisher\n"
|
||||
"BGP tag\n"
|
||||
"tag value\n")
|
||||
{
|
||||
int idx_ipv4 = 2;
|
||||
int idx_rd = 4;
|
||||
int idx_word = 6;
|
||||
return bgp_static_unset_safi (SAFI_ENCAP, vty, argv[idx_ipv4]->arg, argv[idx_rd]->arg, argv[idx_word]->arg,
|
||||
0, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
static int
|
||||
show_adj_route_encap (struct vty *vty, struct peer *peer, struct prefix_rd *prd)
|
||||
{
|
||||
struct bgp *bgp;
|
||||
struct bgp_table *table;
|
||||
struct bgp_node *rn;
|
||||
struct bgp_node *rm;
|
||||
struct attr *attr;
|
||||
int rd_header;
|
||||
int header = 1;
|
||||
char v4_header[] = " Network Next Hop Metric LocPrf Weight Path%s";
|
||||
|
||||
bgp = bgp_get_default ();
|
||||
if (bgp == NULL)
|
||||
{
|
||||
vty_out (vty, "No BGP process is configured%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
for (rn = bgp_table_top (bgp->rib[AFI_IP][SAFI_ENCAP]); rn;
|
||||
rn = bgp_route_next (rn))
|
||||
{
|
||||
if (prd && memcmp (rn->p.u.val, prd->val, 8) != 0)
|
||||
continue;
|
||||
|
||||
if ((table = rn->info) != NULL)
|
||||
{
|
||||
rd_header = 1;
|
||||
|
||||
for (rm = bgp_table_top (table); rm; rm = bgp_route_next (rm))
|
||||
if ((attr = rm->info) != NULL)
|
||||
{
|
||||
if (header)
|
||||
{
|
||||
vty_out (vty, "BGP table version is 0, local router ID is %s%s",
|
||||
inet_ntoa (bgp->router_id), VTY_NEWLINE);
|
||||
vty_out (vty, "Status codes: s suppressed, d damped, h history, * valid, > best, i - internal%s",
|
||||
VTY_NEWLINE);
|
||||
vty_out (vty, "Origin codes: i - IGP, e - EGP, ? - incomplete%s%s",
|
||||
VTY_NEWLINE, VTY_NEWLINE);
|
||||
vty_out (vty, v4_header, VTY_NEWLINE);
|
||||
header = 0;
|
||||
}
|
||||
|
||||
if (rd_header)
|
||||
{
|
||||
u_int16_t type;
|
||||
struct rd_as rd_as;
|
||||
struct rd_ip rd_ip;
|
||||
u_char *pnt;
|
||||
|
||||
pnt = rn->p.u.val;
|
||||
|
||||
vty_out (vty, "Route Distinguisher: ");
|
||||
|
||||
/* Decode RD type. */
|
||||
type = decode_rd_type (pnt);
|
||||
|
||||
switch (type) {
|
||||
|
||||
case RD_TYPE_AS:
|
||||
decode_rd_as (pnt + 2, &rd_as);
|
||||
vty_out (vty, "%u:%d", rd_as.as, rd_as.val);
|
||||
break;
|
||||
|
||||
case RD_TYPE_IP:
|
||||
decode_rd_ip (pnt + 2, &rd_ip);
|
||||
vty_out (vty, "%s:%d", inet_ntoa (rd_ip.ip), rd_ip.val);
|
||||
break;
|
||||
|
||||
default:
|
||||
vty_out (vty, "unknown RD type");
|
||||
}
|
||||
|
||||
|
||||
vty_out (vty, "%s", VTY_NEWLINE);
|
||||
rd_header = 0;
|
||||
}
|
||||
route_vty_out_tmp (vty, &rm->p, attr, SAFI_ENCAP, 0, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
int
|
||||
bgp_show_encap (
|
||||
struct vty *vty,
|
||||
afi_t afi,
|
||||
struct prefix_rd *prd,
|
||||
enum bgp_show_type type,
|
||||
void *output_arg,
|
||||
int tags)
|
||||
{
|
||||
struct bgp *bgp;
|
||||
struct bgp_table *table;
|
||||
struct bgp_node *rn;
|
||||
struct bgp_node *rm;
|
||||
struct bgp_info *ri;
|
||||
int rd_header;
|
||||
int header = 1;
|
||||
char v4_header[] = " Network Next Hop Metric LocPrf Weight Path%s";
|
||||
char v4_header_tag[] = " Network Next Hop In tag/Out tag%s";
|
||||
|
||||
unsigned long output_count = 0;
|
||||
unsigned long total_count = 0;
|
||||
|
||||
bgp = bgp_get_default ();
|
||||
if (bgp == NULL)
|
||||
{
|
||||
vty_out (vty, "No BGP process is configured%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
if ((afi != AFI_IP) && (afi != AFI_IP6)) {
|
||||
vty_out (vty, "Afi %d not supported%s", afi, VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
for (rn = bgp_table_top (bgp->rib[afi][SAFI_ENCAP]); rn; rn = bgp_route_next (rn))
|
||||
{
|
||||
if (prd && memcmp (rn->p.u.val, prd->val, 8) != 0)
|
||||
continue;
|
||||
|
||||
if ((table = rn->info) != NULL)
|
||||
{
|
||||
rd_header = 1;
|
||||
|
||||
for (rm = bgp_table_top (table); rm; rm = bgp_route_next (rm))
|
||||
for (ri = rm->info; ri; ri = ri->next)
|
||||
{
|
||||
total_count++;
|
||||
if (type == bgp_show_type_neighbor)
|
||||
{
|
||||
union sockunion *su = output_arg;
|
||||
|
||||
if (ri->peer->su_remote == NULL || ! sockunion_same(ri->peer->su_remote, su))
|
||||
continue;
|
||||
}
|
||||
if (header)
|
||||
{
|
||||
if (tags)
|
||||
vty_out (vty, v4_header_tag, VTY_NEWLINE);
|
||||
else
|
||||
{
|
||||
vty_out (vty, "BGP table version is 0, local router ID is %s%s",
|
||||
inet_ntoa (bgp->router_id), VTY_NEWLINE);
|
||||
vty_out (vty, "Status codes: s suppressed, d damped, h history, * valid, > best, i - internal%s",
|
||||
VTY_NEWLINE);
|
||||
vty_out (vty, "Origin codes: i - IGP, e - EGP, ? - incomplete%s%s",
|
||||
VTY_NEWLINE, VTY_NEWLINE);
|
||||
vty_out (vty, v4_header, VTY_NEWLINE);
|
||||
}
|
||||
header = 0;
|
||||
}
|
||||
|
||||
if (rd_header)
|
||||
{
|
||||
u_int16_t type;
|
||||
struct rd_as rd_as;
|
||||
struct rd_ip rd_ip;
|
||||
u_char *pnt;
|
||||
|
||||
pnt = rn->p.u.val;
|
||||
|
||||
/* Decode RD type. */
|
||||
type = decode_rd_type (pnt);
|
||||
|
||||
vty_out (vty, "Route Distinguisher: ");
|
||||
|
||||
switch (type) {
|
||||
|
||||
case RD_TYPE_AS:
|
||||
decode_rd_as (pnt + 2, &rd_as);
|
||||
vty_out (vty, "%u:%d", rd_as.as, rd_as.val);
|
||||
break;
|
||||
|
||||
case RD_TYPE_IP:
|
||||
decode_rd_ip (pnt + 2, &rd_ip);
|
||||
vty_out (vty, "%s:%d", inet_ntoa (rd_ip.ip), rd_ip.val);
|
||||
break;
|
||||
|
||||
default:
|
||||
vty_out (vty, "Unknown RD type");
|
||||
break;
|
||||
}
|
||||
|
||||
vty_out (vty, "%s", VTY_NEWLINE);
|
||||
rd_header = 0;
|
||||
}
|
||||
if (tags)
|
||||
route_vty_out_tag (vty, &rm->p, ri, 0, SAFI_ENCAP, NULL);
|
||||
else
|
||||
route_vty_out (vty, &rm->p, ri, 0, SAFI_ENCAP, NULL);
|
||||
output_count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (output_count == 0)
|
||||
{
|
||||
vty_out (vty, "No prefixes displayed, %ld exist%s", total_count, VTY_NEWLINE);
|
||||
}
|
||||
else
|
||||
vty_out (vty, "%sDisplayed %ld routes and %ld total paths%s",
|
||||
VTY_NEWLINE, output_count, total_count, VTY_NEWLINE);
|
||||
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN (show_bgp_ipv4_encap_rd,
|
||||
show_bgp_ipv4_encap_rd_cmd,
|
||||
"show [ip] bgp ipv4 encap rd ASN:nn_or_IP-address:nn",
|
||||
SHOW_STR
|
||||
IP_STR
|
||||
BGP_STR
|
||||
"Address Family\n"
|
||||
"Display ENCAP NLRI specific information\n"
|
||||
"Display information for a route distinguisher\n"
|
||||
"ENCAP Route Distinguisher\n")
|
||||
{
|
||||
int idx_rd = 5;
|
||||
int ret;
|
||||
struct prefix_rd prd;
|
||||
|
||||
ret = str2prefix_rd (argv[idx_rd]->arg, &prd);
|
||||
if (! ret)
|
||||
{
|
||||
vty_out (vty, "%% Malformed Route Distinguisher%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
return bgp_show_encap (vty, AFI_IP, &prd, bgp_show_type_normal, NULL, 0);
|
||||
}
|
||||
|
||||
DEFUN (show_bgp_ipv6_encap_rd,
|
||||
show_bgp_ipv6_encap_rd_cmd,
|
||||
"show [ip] bgp ipv6 encap rd ASN:nn_or_IP-address:nn",
|
||||
SHOW_STR
|
||||
IP_STR
|
||||
BGP_STR
|
||||
"Address Family\n"
|
||||
"Display ENCAP NLRI specific information\n"
|
||||
"Display information for a route distinguisher\n"
|
||||
"ENCAP Route Distinguisher\n"
|
||||
"Display BGP tags for prefixes\n")
|
||||
{
|
||||
int idx_rd = 5;
|
||||
int ret;
|
||||
struct prefix_rd prd;
|
||||
|
||||
ret = str2prefix_rd (argv[idx_rd]->arg, &prd);
|
||||
if (! ret)
|
||||
{
|
||||
vty_out (vty, "%% Malformed Route Distinguisher%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
return bgp_show_encap (vty, AFI_IP6, &prd, bgp_show_type_normal, NULL, 0);
|
||||
}
|
||||
|
||||
DEFUN (show_bgp_ipv4_encap_tags,
|
||||
show_bgp_ipv4_encap_tags_cmd,
|
||||
"show [ip] bgp ipv4 encap tags",
|
||||
SHOW_STR
|
||||
IP_STR
|
||||
BGP_STR
|
||||
"Address Family\n"
|
||||
"Display ENCAP NLRI specific information\n"
|
||||
"Display BGP tags for prefixes\n")
|
||||
{
|
||||
return bgp_show_encap (vty, AFI_IP, NULL, bgp_show_type_normal, NULL, 1);
|
||||
}
|
||||
|
||||
DEFUN (show_bgp_ipv6_encap_tags,
|
||||
show_bgp_ipv6_encap_tags_cmd,
|
||||
"show [ip] bgp ipv6 encap tags",
|
||||
SHOW_STR
|
||||
IP_STR
|
||||
BGP_STR
|
||||
"Address Family\n"
|
||||
"Display ENCAP NLRI specific information\n"
|
||||
"Display BGP tags for prefixes\n")
|
||||
{
|
||||
return bgp_show_encap (vty, AFI_IP6, NULL, bgp_show_type_normal, NULL, 1);
|
||||
}
|
||||
|
||||
DEFUN (show_bgp_ipv4_encap_rd_tags,
|
||||
show_bgp_ipv4_encap_rd_tags_cmd,
|
||||
"show [ip] bgp ipv4 encap rd ASN:nn_or_IP-address:nn tags",
|
||||
SHOW_STR
|
||||
IP_STR
|
||||
BGP_STR
|
||||
"Address Family\n"
|
||||
"Display ENCAP NLRI specific information\n"
|
||||
"Display information for a route distinguisher\n"
|
||||
"ENCAP Route Distinguisher\n"
|
||||
"Display BGP tags for prefixes\n")
|
||||
{
|
||||
int idx_rd = 5;
|
||||
int ret;
|
||||
struct prefix_rd prd;
|
||||
|
||||
ret = str2prefix_rd (argv[idx_rd]->arg, &prd);
|
||||
if (! ret)
|
||||
{
|
||||
vty_out (vty, "%% Malformed Route Distinguisher%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
return bgp_show_encap (vty, AFI_IP, &prd, bgp_show_type_normal, NULL, 1);
|
||||
}
|
||||
|
||||
DEFUN (show_bgp_ipv6_encap_rd_tags,
|
||||
show_bgp_ipv6_encap_rd_tags_cmd,
|
||||
"show [ip] bgp ipv6 encap rd ASN:nn_or_IP-address:nn tags",
|
||||
SHOW_STR
|
||||
IP_STR
|
||||
BGP_STR
|
||||
"Address Family\n"
|
||||
"Display ENCAP NLRI specific information\n"
|
||||
"Display information for a route distinguisher\n"
|
||||
"ENCAP Route Distinguisher\n"
|
||||
"Display BGP tags for prefixes\n")
|
||||
{
|
||||
int idx_rd = 5;
|
||||
int ret;
|
||||
struct prefix_rd prd;
|
||||
|
||||
ret = str2prefix_rd (argv[idx_rd]->arg, &prd);
|
||||
if (! ret)
|
||||
{
|
||||
vty_out (vty, "%% Malformed Route Distinguisher%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
return bgp_show_encap (vty, AFI_IP6, &prd, bgp_show_type_normal, NULL, 1);
|
||||
}
|
||||
|
||||
DEFUN (show_bgp_ipv4_encap_neighbor_routes,
|
||||
show_bgp_ipv4_encap_neighbor_routes_cmd,
|
||||
"show [ip] bgp ipv4 encap neighbors A.B.C.D routes",
|
||||
SHOW_STR
|
||||
IP_STR
|
||||
BGP_STR
|
||||
"Address Family\n"
|
||||
"Display ENCAP NLRI specific information\n"
|
||||
"Detailed information on TCP and BGP neighbor connections\n"
|
||||
"Neighbor to display information about\n"
|
||||
"Display routes learned from neighbor\n")
|
||||
{
|
||||
int idx_peer = 0;
|
||||
union sockunion *su;
|
||||
struct peer *peer;
|
||||
|
||||
argv_find(argv, argc, "A.B.C.D", &idx_peer);
|
||||
su = sockunion_str2su (argv[idx_peer]->arg);
|
||||
|
||||
if (!su)
|
||||
{
|
||||
vty_out (vty, "Malformed address: %s%s", argv[idx_peer]->arg, VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
peer = peer_lookup (NULL, su);
|
||||
if (! peer || ! peer->afc[AFI_IP][SAFI_ENCAP])
|
||||
{
|
||||
vty_out (vty, "%% No such neighbor or address family%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
return bgp_show_encap (vty, AFI_IP, NULL, bgp_show_type_neighbor, su, 0);
|
||||
}
|
||||
|
||||
DEFUN (show_bgp_ipv6_encap_neighbor_routes,
|
||||
show_bgp_ipv6_encap_neighbor_routes_cmd,
|
||||
"show [ip] bgp ipv6 encap neighbors A.B.C.D routes",
|
||||
SHOW_STR
|
||||
IP_STR
|
||||
BGP_STR
|
||||
"Address Family\n"
|
||||
"Display ENCAP NLRI specific information\n"
|
||||
"Detailed information on TCP and BGP neighbor connections\n"
|
||||
"Neighbor to display information about\n"
|
||||
"Display routes learned from neighbor\n")
|
||||
{
|
||||
int idx_peer = 5;
|
||||
union sockunion su;
|
||||
struct peer *peer;
|
||||
|
||||
if (str2sockunion(argv[idx_peer]->arg, &su))
|
||||
{
|
||||
vty_out (vty, "Malformed address: %s%s", argv[idx_peer]->arg, VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
peer = peer_lookup (NULL, &su);
|
||||
if (! peer || ! peer->afc[AFI_IP6][SAFI_ENCAP])
|
||||
{
|
||||
vty_out (vty, "%% No such neighbor or address family%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
return bgp_show_encap (vty, AFI_IP6, NULL, bgp_show_type_neighbor, &su, 0);
|
||||
}
|
||||
|
||||
DEFUN (show_bgp_ipv4_encap_rd_neighbor_routes,
|
||||
show_bgp_ipv4_encap_rd_neighbor_routes_cmd,
|
||||
"show [ip] bgp ipv4 encap rd ASN:nn_or_IP-address:nn neighbors <A.B.C.D|X:X::X:X> routes",
|
||||
SHOW_STR
|
||||
IP_STR
|
||||
BGP_STR
|
||||
"Address Family\n"
|
||||
"Display ENCAP NLRI specific information\n"
|
||||
"Display information for a route distinguisher\n"
|
||||
"ENCAP Route Distinguisher\n"
|
||||
"Detailed information on TCP and BGP neighbor connections\n"
|
||||
"Neighbor to display information about\n"
|
||||
"Neighbor to display information about\n"
|
||||
"Display routes learned from neighbor\n")
|
||||
{
|
||||
int idx_rd = 5;
|
||||
int idx_peer = 7;
|
||||
int ret;
|
||||
union sockunion su;
|
||||
struct peer *peer;
|
||||
struct prefix_rd prd;
|
||||
|
||||
ret = str2prefix_rd (argv[idx_rd]->arg, &prd);
|
||||
if (! ret)
|
||||
{
|
||||
vty_out (vty, "%% Malformed Route Distinguisher%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
if (str2sockunion(argv[idx_peer]->arg, &su))
|
||||
{
|
||||
vty_out (vty, "Malformed address: %s%s", argv[idx_peer]->arg, VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
peer = peer_lookup (NULL, &su);
|
||||
if (! peer || ! peer->afc[AFI_IP][SAFI_ENCAP])
|
||||
{
|
||||
vty_out (vty, "%% No such neighbor or address family%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
return bgp_show_encap (vty, AFI_IP, &prd, bgp_show_type_neighbor, &su, 0);
|
||||
}
|
||||
|
||||
DEFUN (show_bgp_ipv6_encap_rd_neighbor_routes,
|
||||
show_bgp_ipv6_encap_rd_neighbor_routes_cmd,
|
||||
"show [ip] bgp ipv6 encap rd ASN:nn_or_IP-address:nn neighbors <A.B.C.D|X:X::X:X> routes",
|
||||
SHOW_STR
|
||||
IP_STR
|
||||
BGP_STR
|
||||
"Address Family\n"
|
||||
"Display ENCAP NLRI specific information\n"
|
||||
"Display information for a route distinguisher\n"
|
||||
"ENCAP Route Distinguisher\n"
|
||||
"Detailed information on TCP and BGP neighbor connections\n"
|
||||
"Neighbor to display information about\n"
|
||||
"Neighbor to display information about\n"
|
||||
"Display routes learned from neighbor\n")
|
||||
{
|
||||
int idx_rd = 5;
|
||||
int idx_peer = 7;
|
||||
int ret;
|
||||
union sockunion su;
|
||||
struct peer *peer;
|
||||
struct prefix_rd prd;
|
||||
|
||||
ret = str2prefix_rd (argv[idx_rd]->arg, &prd);
|
||||
if (! ret)
|
||||
{
|
||||
vty_out (vty, "%% Malformed Route Distinguisher%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
if (str2sockunion(argv[idx_peer]->arg, &su))
|
||||
{
|
||||
vty_out (vty, "Malformed address: %s%s", argv[idx_peer]->arg, VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
peer = peer_lookup (NULL, &su);
|
||||
if (! peer || ! peer->afc[AFI_IP6][SAFI_ENCAP])
|
||||
{
|
||||
vty_out (vty, "%% No such neighbor or address family%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
return bgp_show_encap (vty, AFI_IP6, &prd, bgp_show_type_neighbor, &su, 0);
|
||||
}
|
||||
|
||||
DEFUN (show_bgp_ipv4_encap_neighbor_advertised_routes,
|
||||
show_bgp_ipv4_encap_neighbor_advertised_routes_cmd,
|
||||
"show [ip] bgp ipv4 encap neighbors A.B.C.D advertised-routes",
|
||||
SHOW_STR
|
||||
IP_STR
|
||||
BGP_STR
|
||||
"Address Family\n"
|
||||
"Display ENCAP NLRI specific information\n"
|
||||
"Detailed information on TCP and BGP neighbor connections\n"
|
||||
"Neighbor to display information about\n"
|
||||
"Display the routes advertised to a BGP neighbor\n")
|
||||
{
|
||||
int idx_peer = 5;
|
||||
int ret;
|
||||
struct peer *peer;
|
||||
union sockunion su;
|
||||
|
||||
ret = str2sockunion (argv[idx_peer]->arg, &su);
|
||||
if (ret < 0)
|
||||
{
|
||||
vty_out (vty, "%% Malformed address: %s%s", argv[idx_peer]->arg, VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
peer = peer_lookup (NULL, &su);
|
||||
if (! peer || ! peer->afc[AFI_IP][SAFI_ENCAP])
|
||||
{
|
||||
vty_out (vty, "%% No such neighbor or address family%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
return show_adj_route_encap (vty, peer, NULL);
|
||||
}
|
||||
|
||||
DEFUN (show_bgp_ipv6_encap_neighbor_advertised_routes,
|
||||
show_bgp_ipv6_encap_neighbor_advertised_routes_cmd,
|
||||
"show [ip] bgp ipv6 encap neighbors A.B.C.D advertised-routes",
|
||||
SHOW_STR
|
||||
IP_STR
|
||||
BGP_STR
|
||||
"Address Family\n"
|
||||
"Display ENCAP NLRI specific information\n"
|
||||
"Detailed information on TCP and BGP neighbor connections\n"
|
||||
"Neighbor to display information about\n"
|
||||
"Display the routes advertised to a BGP neighbor\n")
|
||||
{
|
||||
int idx_peer = 5;
|
||||
int ret;
|
||||
struct peer *peer;
|
||||
union sockunion su;
|
||||
|
||||
ret = str2sockunion (argv[idx_peer]->arg, &su);
|
||||
if (ret < 0)
|
||||
{
|
||||
vty_out (vty, "%% Malformed address: %s%s", argv[idx_peer]->arg, VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
peer = peer_lookup (NULL, &su);
|
||||
if (! peer || ! peer->afc[AFI_IP6][SAFI_ENCAP])
|
||||
{
|
||||
vty_out (vty, "%% No such neighbor or address family%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
return show_adj_route_encap (vty, peer, NULL);
|
||||
}
|
||||
|
||||
DEFUN (show_bgp_ipv4_encap_rd_neighbor_advertised_routes,
|
||||
show_bgp_ipv4_encap_rd_neighbor_advertised_routes_cmd,
|
||||
"show [ip] bgp ipv4 encap rd ASN:nn_or_IP-address:nn neighbors <A.B.C.D|X:X::X:X> advertised-routes",
|
||||
SHOW_STR
|
||||
IP_STR
|
||||
BGP_STR
|
||||
"Address Family\n"
|
||||
"Display ENCAP NLRI specific information\n"
|
||||
"Display information for a route distinguisher\n"
|
||||
"ENCAP Route Distinguisher\n"
|
||||
"Detailed information on TCP and BGP neighbor connections\n"
|
||||
"Neighbor to display information about\n"
|
||||
"Neighbor to display information about\n"
|
||||
"Display the routes advertised to a BGP neighbor\n")
|
||||
{
|
||||
int idx_rd = 5;
|
||||
int idx_peer = 7;
|
||||
int ret;
|
||||
struct peer *peer;
|
||||
struct prefix_rd prd;
|
||||
union sockunion su;
|
||||
|
||||
ret = str2sockunion (argv[idx_peer]->arg, &su);
|
||||
if (ret < 0)
|
||||
{
|
||||
vty_out (vty, "%% Malformed address: %s%s", argv[idx_peer]->arg, VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
peer = peer_lookup (NULL, &su);
|
||||
if (! peer || ! peer->afc[AFI_IP][SAFI_ENCAP])
|
||||
{
|
||||
vty_out (vty, "%% No such neighbor or address family%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
ret = str2prefix_rd (argv[idx_rd]->arg, &prd);
|
||||
if (! ret)
|
||||
{
|
||||
vty_out (vty, "%% Malformed Route Distinguisher%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
return show_adj_route_encap (vty, peer, &prd);
|
||||
}
|
||||
|
||||
DEFUN (show_bgp_ipv6_encap_rd_neighbor_advertised_routes,
|
||||
show_bgp_ipv6_encap_rd_neighbor_advertised_routes_cmd,
|
||||
"show [ip] bgp ipv6 encap rd ASN:nn_or_IP-address:nn neighbors <A.B.C.D|X:X::X:X> advertised-routes",
|
||||
SHOW_STR
|
||||
IP_STR
|
||||
BGP_STR
|
||||
"Address Family\n"
|
||||
"Display ENCAP NLRI specific information\n"
|
||||
"Display information for a route distinguisher\n"
|
||||
"ENCAP Route Distinguisher\n"
|
||||
"Detailed information on TCP and BGP neighbor connections\n"
|
||||
"Neighbor to display information about\n"
|
||||
"Neighbor to display information about\n"
|
||||
"Display the routes advertised to a BGP neighbor\n")
|
||||
{
|
||||
int idx_rd = 5;
|
||||
int idx_peer = 7;
|
||||
int ret;
|
||||
struct peer *peer;
|
||||
struct prefix_rd prd;
|
||||
union sockunion su;
|
||||
|
||||
ret = str2sockunion (argv[idx_peer]->arg, &su);
|
||||
if (ret < 0)
|
||||
{
|
||||
vty_out (vty, "%% Malformed address: %s%s", argv[idx_peer]->arg, VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
peer = peer_lookup (NULL, &su);
|
||||
if (! peer || ! peer->afc[AFI_IP6][SAFI_ENCAP])
|
||||
{
|
||||
vty_out (vty, "%% No such neighbor or address family%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
ret = str2prefix_rd (argv[idx_rd]->arg, &prd);
|
||||
if (! ret)
|
||||
{
|
||||
vty_out (vty, "%% Malformed Route Distinguisher%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
return show_adj_route_encap (vty, peer, &prd);
|
||||
}
|
||||
|
||||
void
|
||||
bgp_encap_init (void)
|
||||
{
|
||||
install_element (BGP_ENCAP_NODE, &encap_network_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &no_encap_network_cmd);
|
||||
|
||||
install_element (VIEW_NODE, &show_bgp_ipv4_encap_rd_cmd);
|
||||
install_element (VIEW_NODE, &show_bgp_ipv4_encap_tags_cmd);
|
||||
install_element (VIEW_NODE, &show_bgp_ipv4_encap_rd_tags_cmd);
|
||||
install_element (VIEW_NODE, &show_bgp_ipv4_encap_neighbor_routes_cmd);
|
||||
install_element (VIEW_NODE, &show_bgp_ipv4_encap_rd_neighbor_routes_cmd);
|
||||
install_element (VIEW_NODE, &show_bgp_ipv4_encap_neighbor_advertised_routes_cmd);
|
||||
install_element (VIEW_NODE, &show_bgp_ipv4_encap_rd_neighbor_advertised_routes_cmd);
|
||||
|
||||
install_element (VIEW_NODE, &show_bgp_ipv6_encap_rd_cmd);
|
||||
install_element (VIEW_NODE, &show_bgp_ipv6_encap_tags_cmd);
|
||||
install_element (VIEW_NODE, &show_bgp_ipv6_encap_rd_tags_cmd);
|
||||
install_element (VIEW_NODE, &show_bgp_ipv6_encap_neighbor_routes_cmd);
|
||||
install_element (VIEW_NODE, &show_bgp_ipv6_encap_rd_neighbor_routes_cmd);
|
||||
install_element (VIEW_NODE, &show_bgp_ipv6_encap_neighbor_advertised_routes_cmd);
|
||||
install_element (VIEW_NODE, &show_bgp_ipv6_encap_rd_neighbor_advertised_routes_cmd);
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
/*
|
||||
*
|
||||
* Copyright 2009-2015, LabN Consulting, L.L.C.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_ENCAP_H
|
||||
#define _QUAGGA_BGP_ENCAP_H
|
||||
#include "bgpd/bgp_route.h"
|
||||
|
||||
extern void bgp_encap_init (void);
|
||||
extern int bgp_nlri_parse_encap (struct peer *, struct attr *, struct bgp_nlri *);
|
||||
extern int bgp_show_encap (struct vty *vty, afi_t afi, struct prefix_rd *prd,
|
||||
enum bgp_show_type type, void *output_arg, int tags);
|
||||
#include "bgp_encap_types.h"
|
||||
#endif /* _QUAGGA_BGP_ENCAP_H */
|
@ -11,10 +11,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
@ -11,10 +11,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_ENCAP_TLV_H
|
||||
|
@ -11,10 +11,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_ENCAP_TYPES_H
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* Ethernet-VPN Packet and vty Processing File
|
||||
Copyright (C) 2016 6WIND
|
||||
|
||||
This file is part of FRRouting.
|
||||
|
||||
FRRouting is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
FRRouting is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with FRRouting; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 2016 6WIND
|
||||
*
|
||||
* This file is part of FRRouting.
|
||||
*
|
||||
* FRRouting is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* FRRouting is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* E-VPN header for packet handling
|
||||
Copyright (C) 2016 6WIND
|
||||
|
||||
This file is part of FRRouting.
|
||||
|
||||
FRRouting is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
FRRouting is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with FRRouting; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 2016 6WIND
|
||||
*
|
||||
* This file is part of FRRouting.
|
||||
*
|
||||
* FRRouting is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* FRRouting is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_EVPN_H
|
||||
#define _QUAGGA_BGP_EVPN_H
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* Ethernet-VPN Packet and vty Processing File
|
||||
Copyright (C) 2017 6WIND
|
||||
|
||||
This file is part of FRRouting
|
||||
|
||||
FRRouting is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
FRRouting is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with FRRouting; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 2017 6WIND
|
||||
*
|
||||
* This file is part of FRRouting
|
||||
*
|
||||
* FRRouting is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* FRRouting is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
#include "command.h"
|
||||
@ -705,7 +705,7 @@ DEFUN(evpnrt5_network,
|
||||
int idx_ethtag = 5;
|
||||
int idx_routermac = 13;
|
||||
int idx_rmap = 15;
|
||||
return bgp_static_set_safi(SAFI_EVPN, vty,
|
||||
return bgp_static_set_safi(AFI_L2VPN, SAFI_EVPN, vty,
|
||||
argv[idx_ipv4_prefixlen]->arg,
|
||||
argv[idx_ext_community]->arg,
|
||||
argv[idx_word]->arg,
|
||||
@ -739,7 +739,7 @@ DEFUN(no_evpnrt5_network,
|
||||
int idx_ethtag = 6;
|
||||
int idx_esi = 10;
|
||||
int idx_gwip = 12;
|
||||
return bgp_static_unset_safi(SAFI_EVPN, vty,
|
||||
return bgp_static_unset_safi(AFI_L2VPN, SAFI_EVPN, vty,
|
||||
argv[idx_ipv4_prefixlen]->arg,
|
||||
argv[idx_ext_community]->arg,
|
||||
argv[idx_label]->arg, EVPN_IP_PREFIX,
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* EVPN VTY functions to EVPN
|
||||
Copyright (C) 2017 6WIND
|
||||
|
||||
This file is part of FRRouting.
|
||||
|
||||
FRRouting is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
FRRouting is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with FRRouting; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 2017 6WIND
|
||||
*
|
||||
* This file is part of FRRouting.
|
||||
*
|
||||
* FRRouting is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* FRRouting is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _FRR_BGP_EVPN_VTY_H
|
||||
#define _FRR_BGP_EVPN_VTY_H
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* AS path filter list.
|
||||
Copyright (C) 1999 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1999 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* AS path filter list.
|
||||
Copyright (C) 1999 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1999 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_FILTER_H
|
||||
#define _QUAGGA_BGP_FILTER_H
|
||||
|
@ -1,23 +1,23 @@
|
||||
/* BGP-4 Finite State Machine
|
||||
From RFC1771 [A Border Gateway Protocol 4 (BGP-4)]
|
||||
Copyright (C) 1996, 97, 98 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* From RFC1771 [A Border Gateway Protocol 4 (BGP-4)]
|
||||
* Copyright (C) 1996, 97, 98 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
@ -1020,8 +1020,14 @@ bgp_stop (struct peer *peer)
|
||||
|
||||
/* bgp log-neighbor-changes of neighbor Down */
|
||||
if (bgp_flag_check (peer->bgp, BGP_FLAG_LOG_NEIGHBOR_CHANGES))
|
||||
zlog_info ("%%ADJCHANGE: neighbor %s Down %s", peer->host,
|
||||
peer_down_str [(int) peer->last_reset]);
|
||||
{
|
||||
struct vrf *vrf = vrf_lookup_by_id (peer->bgp->vrf_id);
|
||||
zlog_info ("%%ADJCHANGE: neighbor %s(%s) in vrf %s Down %s",
|
||||
peer->host,
|
||||
(peer->hostname) ? peer->hostname : "Unknown",
|
||||
vrf ? ((vrf->vrf_id != VRF_DEFAULT) ? vrf->name : "Default") : "",
|
||||
peer_down_str [(int) peer->last_reset]);
|
||||
}
|
||||
|
||||
/* graceful restart */
|
||||
if (peer->t_gr_stale)
|
||||
@ -1458,8 +1464,13 @@ bgp_establish (struct peer *peer)
|
||||
|
||||
/* bgp log-neighbor-changes of neighbor Up */
|
||||
if (bgp_flag_check (peer->bgp, BGP_FLAG_LOG_NEIGHBOR_CHANGES))
|
||||
zlog_info ("%%ADJCHANGE: neighbor %s Up", peer->host);
|
||||
|
||||
{
|
||||
struct vrf *vrf = vrf_lookup_by_id (peer->bgp->vrf_id);
|
||||
zlog_info ("%%ADJCHANGE: neighbor %s(%s) in vrf %s Up",
|
||||
peer->host,
|
||||
(peer->hostname) ? peer->hostname : "Unknown",
|
||||
vrf ? ((vrf->vrf_id != VRF_DEFAULT ) ? vrf->name : "Default") : "");
|
||||
}
|
||||
/* assign update-group/subgroup */
|
||||
update_group_adjust_peer_afs(peer);
|
||||
|
||||
|
@ -1,23 +1,23 @@
|
||||
/* BGP-4 Finite State Machine
|
||||
From RFC1771 [A Border Gateway Protocol 4 (BGP-4)]
|
||||
Copyright (C) 1998 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* From RFC1771 [A Border Gateway Protocol 4 (BGP-4)]
|
||||
* Copyright (C) 1998 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_FSM_H
|
||||
#define _QUAGGA_BGP_FSM_H
|
||||
|
@ -13,10 +13,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
* Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
@ -13,10 +13,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
* Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _BGP_LABEL_H
|
||||
@ -42,7 +41,8 @@ extern int bgp_nlri_parse_label (struct peer *peer, struct attr *attr,
|
||||
static inline int
|
||||
bgp_labeled_safi (safi_t safi)
|
||||
{
|
||||
if ((safi == SAFI_LABELED_UNICAST) || (safi == SAFI_MPLS_VPN))
|
||||
if ((safi == SAFI_LABELED_UNICAST) || (safi == SAFI_MPLS_VPN) ||
|
||||
(safi == SAFI_EVPN))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
@ -14,8 +14,8 @@
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with FRR; see the file COPYING. If not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
@ -14,8 +14,8 @@
|
||||
* details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with FRR; see the file COPYING. If not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_LCOMMUNITY_H
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* Main routine of bgpd.
|
||||
Copyright (C) 1996, 97, 98, 1999 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1996, 97, 98, 1999 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
@ -194,7 +194,6 @@ bgp_exit (int status)
|
||||
/* reverse bgp_master_init */
|
||||
for (ALL_LIST_ELEMENTS (bm->bgp, node, nnode, bgp))
|
||||
bgp_delete (bgp);
|
||||
list_free (bm->bgp);
|
||||
|
||||
/* reverse bgp_dump_init */
|
||||
bgp_dump_finish ();
|
||||
@ -246,6 +245,7 @@ bgp_exit (int status)
|
||||
|
||||
closezlog ();
|
||||
|
||||
list_delete (bm->bgp);
|
||||
memset (bm, 0, sizeof (*bm));
|
||||
|
||||
if (bgp_debug_count())
|
||||
@ -327,22 +327,15 @@ bgp_vrf_disable (struct vrf *vrf)
|
||||
static void
|
||||
bgp_vrf_init (void)
|
||||
{
|
||||
vrf_add_hook (VRF_NEW_HOOK, bgp_vrf_new);
|
||||
vrf_add_hook (VRF_ENABLE_HOOK, bgp_vrf_enable);
|
||||
vrf_add_hook (VRF_DISABLE_HOOK, bgp_vrf_disable);
|
||||
vrf_add_hook (VRF_DELETE_HOOK, bgp_vrf_delete);
|
||||
|
||||
vrf_init ();
|
||||
vrf_init (bgp_vrf_new,
|
||||
bgp_vrf_enable,
|
||||
bgp_vrf_disable,
|
||||
bgp_vrf_delete);
|
||||
}
|
||||
|
||||
static void
|
||||
bgp_vrf_terminate (void)
|
||||
{
|
||||
vrf_add_hook (VRF_NEW_HOOK, NULL);
|
||||
vrf_add_hook (VRF_ENABLE_HOOK, NULL);
|
||||
vrf_add_hook (VRF_DISABLE_HOOK, NULL);
|
||||
vrf_add_hook (VRF_DELETE_HOOK, NULL);
|
||||
|
||||
vrf_terminate ();
|
||||
}
|
||||
|
||||
|
@ -14,10 +14,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Quagga; see the file COPYING. If not, write to the Free
|
||||
* Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
|
@ -14,10 +14,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Quagga; see the file COPYING. If not, write to the Free
|
||||
* Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_MEMORY_H
|
||||
|
@ -14,10 +14,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Quagga; see the file COPYING. If not, write to the Free
|
||||
* Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
@ -14,10 +14,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with Quagga; see the file COPYING. If not, write to the Free
|
||||
* Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_MPATH_H
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* MPLS-VPN
|
||||
Copyright (C) 2000 Kunihiro Ishiguro <kunihiro@zebra.org>
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 2000 Kunihiro Ishiguro <kunihiro@zebra.org>
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
@ -381,31 +381,6 @@ out:
|
||||
return lret;
|
||||
}
|
||||
|
||||
int
|
||||
str2tag (const char *str, u_char *tag)
|
||||
{
|
||||
unsigned long l;
|
||||
char *endptr;
|
||||
u_int32_t t;
|
||||
|
||||
if (*str == '-')
|
||||
return 0;
|
||||
|
||||
errno = 0;
|
||||
l = strtoul (str, &endptr, 10);
|
||||
|
||||
if (*endptr != '\0' || errno || l > UINT32_MAX)
|
||||
return 0;
|
||||
|
||||
t = (u_int32_t) l;
|
||||
|
||||
tag[0] = (u_char)(t >> 12);
|
||||
tag[1] = (u_char)(t >> 4);
|
||||
tag[2] = (u_char)(t << 4);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
char *
|
||||
prefix_rd2str (struct prefix_rd *prd, char *buf, size_t size)
|
||||
{
|
||||
@ -460,99 +435,104 @@ prefix_rd2str (struct prefix_rd *prd, char *buf, size_t size)
|
||||
/* For testing purpose, static route of MPLS-VPN. */
|
||||
DEFUN (vpnv4_network,
|
||||
vpnv4_network_cmd,
|
||||
"network A.B.C.D/M rd ASN:nn_or_IP-address:nn tag WORD",
|
||||
"network A.B.C.D/M rd ASN:nn_or_IP-address:nn <tag|label> (0-1048575)",
|
||||
"Specify a network to announce via BGP\n"
|
||||
"IPv4 prefix\n"
|
||||
"Specify Route Distinguisher\n"
|
||||
"VPN Route Distinguisher\n"
|
||||
"BGP tag\n"
|
||||
"tag value\n")
|
||||
"VPN NLRI label (tag)\n"
|
||||
"VPN NLRI label (tag)\n"
|
||||
"Label value\n")
|
||||
{
|
||||
int idx_ipv4_prefixlen = 1;
|
||||
int idx_ext_community = 3;
|
||||
int idx_word = 5;
|
||||
return bgp_static_set_safi (SAFI_MPLS_VPN, vty, argv[idx_ipv4_prefixlen]->arg, argv[idx_ext_community]->arg,
|
||||
argv[idx_word]->arg, NULL, 0, NULL, NULL, NULL, NULL);
|
||||
int idx_label = 5;
|
||||
return bgp_static_set_safi (AFI_IP, SAFI_MPLS_VPN, vty, argv[idx_ipv4_prefixlen]->arg, argv[idx_ext_community]->arg,
|
||||
argv[idx_label]->arg, NULL, 0, NULL, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
DEFUN (vpnv4_network_route_map,
|
||||
vpnv4_network_route_map_cmd,
|
||||
"network A.B.C.D/M rd ASN:nn_or_IP-address:nn tag WORD route-map WORD",
|
||||
"network A.B.C.D/M rd ASN:nn_or_IP-address:nn <tag|label> (0-1048575) route-map WORD",
|
||||
"Specify a network to announce via BGP\n"
|
||||
"IPv4 prefix\n"
|
||||
"Specify Route Distinguisher\n"
|
||||
"VPN Route Distinguisher\n"
|
||||
"BGP tag\n"
|
||||
"tag value\n"
|
||||
"VPN NLRI label (tag)\n"
|
||||
"VPN NLRI label (tag)\n"
|
||||
"Label value\n"
|
||||
"route map\n"
|
||||
"route map name\n")
|
||||
{
|
||||
int idx_ipv4_prefixlen = 1;
|
||||
int idx_ext_community = 3;
|
||||
int idx_word = 5;
|
||||
int idx_label = 5;
|
||||
int idx_word_2 = 7;
|
||||
return bgp_static_set_safi (SAFI_MPLS_VPN, vty, argv[idx_ipv4_prefixlen]->arg, argv[idx_ext_community]->arg, argv[idx_word]->arg,
|
||||
return bgp_static_set_safi (AFI_IP, SAFI_MPLS_VPN, vty, argv[idx_ipv4_prefixlen]->arg, argv[idx_ext_community]->arg, argv[idx_label]->arg,
|
||||
argv[idx_word_2]->arg, 0, NULL, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
/* For testing purpose, static route of MPLS-VPN. */
|
||||
DEFUN (no_vpnv4_network,
|
||||
no_vpnv4_network_cmd,
|
||||
"no network A.B.C.D/M rd ASN:nn_or_IP-address:nn tag WORD",
|
||||
"no network A.B.C.D/M rd ASN:nn_or_IP-address:nn <tag|label> (0-1048575)",
|
||||
NO_STR
|
||||
"Specify a network to announce via BGP\n"
|
||||
"IPv4 prefix\n"
|
||||
"Specify Route Distinguisher\n"
|
||||
"VPN Route Distinguisher\n"
|
||||
"BGP tag\n"
|
||||
"tag value\n")
|
||||
"VPN NLRI label (tag)\n"
|
||||
"VPN NLRI label (tag)\n"
|
||||
"Label value\n")
|
||||
{
|
||||
int idx_ipv4_prefixlen = 2;
|
||||
int idx_ext_community = 4;
|
||||
int idx_word = 6;
|
||||
return bgp_static_unset_safi (SAFI_MPLS_VPN, vty, argv[idx_ipv4_prefixlen]->arg,
|
||||
argv[idx_ext_community]->arg, argv[idx_word]->arg,
|
||||
int idx_label = 6;
|
||||
return bgp_static_unset_safi (AFI_IP, SAFI_MPLS_VPN, vty, argv[idx_ipv4_prefixlen]->arg,
|
||||
argv[idx_ext_community]->arg, argv[idx_label]->arg,
|
||||
0, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
DEFUN (vpnv6_network,
|
||||
vpnv6_network_cmd,
|
||||
"network X:X::X:X/M rd ASN:nn_or_IP-address:nn tag WORD [route-map WORD]",
|
||||
"network X:X::X:X/M rd ASN:nn_or_IP-address:nn <tag|label> (0-1048575) [route-map WORD]",
|
||||
"Specify a network to announce via BGP\n"
|
||||
"IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n"
|
||||
"Specify Route Distinguisher\n"
|
||||
"VPN Route Distinguisher\n"
|
||||
"BGP tag\n"
|
||||
"tag value\n"
|
||||
"VPN NLRI label (tag)\n"
|
||||
"VPN NLRI label (tag)\n"
|
||||
"Label value\n"
|
||||
"route map\n"
|
||||
"route map name\n")
|
||||
{
|
||||
int idx_ipv6_prefix = 1;
|
||||
int idx_ext_community = 3;
|
||||
int idx_word = 5;
|
||||
int idx_label = 5;
|
||||
int idx_word_2 = 7;
|
||||
if (argc == 8)
|
||||
return bgp_static_set_safi (SAFI_MPLS_VPN, vty, argv[idx_ipv6_prefix]->arg, argv[idx_ext_community]->arg, argv[idx_word]->arg, argv[idx_word_2]->arg, 0, NULL, NULL, NULL, NULL);
|
||||
return bgp_static_set_safi (AFI_IP6, SAFI_MPLS_VPN, vty, argv[idx_ipv6_prefix]->arg, argv[idx_ext_community]->arg, argv[idx_label]->arg, argv[idx_word_2]->arg, 0, NULL, NULL, NULL, NULL);
|
||||
else
|
||||
return bgp_static_set_safi (SAFI_MPLS_VPN, vty, argv[idx_ipv6_prefix]->arg, argv[idx_ext_community]->arg, argv[idx_word]->arg, NULL, 0, NULL, NULL, NULL, NULL);
|
||||
return bgp_static_set_safi (AFI_IP6, SAFI_MPLS_VPN, vty, argv[idx_ipv6_prefix]->arg, argv[idx_ext_community]->arg, argv[idx_label]->arg, NULL, 0, NULL, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
/* For testing purpose, static route of MPLS-VPN. */
|
||||
DEFUN (no_vpnv6_network,
|
||||
no_vpnv6_network_cmd,
|
||||
"no network X:X::X:X/M rd ASN:nn_or_IP-address:nn tag WORD",
|
||||
"no network X:X::X:X/M rd ASN:nn_or_IP-address:nn <tag|label> (0-1048575)",
|
||||
NO_STR
|
||||
"Specify a network to announce via BGP\n"
|
||||
"IPv6 prefix <network>/<length>, e.g., 3ffe::/16\n"
|
||||
"Specify Route Distinguisher\n"
|
||||
"VPN Route Distinguisher\n"
|
||||
"BGP tag\n"
|
||||
"tag value\n")
|
||||
"VPN NLRI label (tag)\n"
|
||||
"VPN NLRI label (tag)\n"
|
||||
"Label value\n")
|
||||
{
|
||||
int idx_ipv6_prefix = 2;
|
||||
int idx_ext_community = 4;
|
||||
int idx_word = 6;
|
||||
return bgp_static_unset_safi (SAFI_MPLS_VPN, vty, argv[idx_ipv6_prefix]->arg, argv[idx_ext_community]->arg, argv[idx_word]->arg, 0, NULL, NULL, NULL);
|
||||
int idx_label = 6;
|
||||
return bgp_static_unset_safi (AFI_IP6, SAFI_MPLS_VPN, vty, argv[idx_ipv6_prefix]->arg, argv[idx_ext_community]->arg, argv[idx_label]->arg, 0, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
int
|
||||
@ -1196,7 +1176,6 @@ bgp_mplsvpn_init (void)
|
||||
install_element (VIEW_NODE, &show_ip_bgp_vpn_rd_cmd);
|
||||
#ifdef KEEP_OLD_VPN_COMMANDS
|
||||
install_element (VIEW_NODE, &show_ip_bgp_vpn_all_cmd);
|
||||
install_element (VIEW_NODE, &show_ip_bgp_vpn_rd_cmd);
|
||||
install_element (VIEW_NODE, &show_ip_bgp_vpn_all_tags_cmd);
|
||||
install_element (VIEW_NODE, &show_ip_bgp_vpn_rd_tags_cmd);
|
||||
install_element (VIEW_NODE, &show_ip_bgp_vpn_all_neighbor_routes_cmd);
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* MPLS-VPN
|
||||
Copyright (C) 2000 Kunihiro Ishiguro <kunihiro@zebra.org>
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 2000 Kunihiro Ishiguro <kunihiro@zebra.org>
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_MPLSVPN_H
|
||||
#define _QUAGGA_BGP_MPLSVPN_H
|
||||
@ -104,7 +104,6 @@ extern void
|
||||
decode_rd_vnc_eth (u_char *pnt, struct rd_vnc_eth *rd_vnc_eth);
|
||||
#endif
|
||||
extern int str2prefix_rd (const char *, struct prefix_rd *);
|
||||
extern int str2tag (const char *, u_char *);
|
||||
extern char *prefix_rd2str (struct prefix_rd *, char *, size_t);
|
||||
|
||||
extern int
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP network related fucntions
|
||||
Copyright (C) 1999 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1999 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP network related header
|
||||
Copyright (C) 1999 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1999 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_NETWORK_H
|
||||
#define _QUAGGA_BGP_NETWORK_H
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP nexthop scan
|
||||
Copyright (C) 2000 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 2000 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP nexthop scan
|
||||
Copyright (C) 2000 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 2000 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_NEXTHOP_H
|
||||
#define _QUAGGA_BGP_NEXTHOP_H
|
||||
|
@ -13,10 +13,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
* Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
@ -13,10 +13,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
* Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _BGP_NHT_H
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP open message handling
|
||||
Copyright (C) 1998, 1999 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1998, 1999 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
@ -266,7 +266,8 @@ static int
|
||||
bgp_capability_orf_entry (struct peer *peer, struct capability_header *hdr)
|
||||
{
|
||||
struct stream *s = BGP_INPUT (peer);
|
||||
struct capability_orf_entry entry;
|
||||
struct capability_mp_data mpc;
|
||||
u_char num;
|
||||
iana_afi_t pkt_afi;
|
||||
afi_t afi;
|
||||
safi_t pkt_safi, safi;
|
||||
@ -277,14 +278,14 @@ bgp_capability_orf_entry (struct peer *peer, struct capability_header *hdr)
|
||||
int i;
|
||||
|
||||
/* ORF Entry header */
|
||||
bgp_capability_mp_data (s, &entry.mpc);
|
||||
entry.num = stream_getc (s);
|
||||
pkt_afi = entry.mpc.afi;
|
||||
pkt_safi = entry.mpc.safi;
|
||||
bgp_capability_mp_data (s, &mpc);
|
||||
num = stream_getc (s);
|
||||
pkt_afi = mpc.afi;
|
||||
pkt_safi = mpc.safi;
|
||||
|
||||
if (bgp_debug_neighbor_events(peer))
|
||||
zlog_debug ("%s ORF Cap entry for afi/safi: %u/%u",
|
||||
peer->host, entry.mpc.afi, entry.mpc.safi);
|
||||
peer->host, mpc.afi, mpc.safi);
|
||||
|
||||
/* Convert AFI, SAFI to internal values, check. */
|
||||
if (bgp_map_afi_safi_iana2int (pkt_afi, pkt_safi, &afi, &safi))
|
||||
@ -295,20 +296,20 @@ bgp_capability_orf_entry (struct peer *peer, struct capability_header *hdr)
|
||||
return 0;
|
||||
}
|
||||
|
||||
entry.mpc.afi = pkt_afi;
|
||||
entry.mpc.safi = safi;
|
||||
mpc.afi = pkt_afi;
|
||||
mpc.safi = safi;
|
||||
|
||||
/* validate number field */
|
||||
if (CAPABILITY_CODE_ORF_LEN + (entry.num * 2) > hdr->length)
|
||||
if (CAPABILITY_CODE_ORF_LEN + (num * 2) > hdr->length)
|
||||
{
|
||||
zlog_info ("%s ORF Capability entry length error,"
|
||||
" Cap length %u, num %u",
|
||||
peer->host, hdr->length, entry.num);
|
||||
peer->host, hdr->length, num);
|
||||
bgp_notify_send (peer, BGP_NOTIFY_OPEN_ERR, BGP_NOTIFY_OPEN_MALFORMED_ATTR);
|
||||
return -1;
|
||||
}
|
||||
|
||||
for (i = 0 ; i < entry.num ; i++)
|
||||
for (i = 0 ; i < num ; i++)
|
||||
{
|
||||
type = stream_getc(s);
|
||||
mode = stream_getc(s);
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP open message handling
|
||||
Copyright (C) 1999 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1999 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_OPEN_H
|
||||
#define _QUAGGA_BGP_OPEN_H
|
||||
@ -36,18 +36,6 @@ struct capability_mp_data
|
||||
safi_t safi;
|
||||
};
|
||||
|
||||
#pragma pack(1)
|
||||
struct capability_orf_entry
|
||||
{
|
||||
struct capability_mp_data mpc;
|
||||
u_char num;
|
||||
struct {
|
||||
u_char type;
|
||||
u_char mode;
|
||||
} orfs[];
|
||||
} __attribute__ ((packed));
|
||||
#pragma pack()
|
||||
|
||||
struct capability_as4
|
||||
{
|
||||
uint32_t as4;
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP packet management routine.
|
||||
Copyright (C) 1999 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1999 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
@ -50,8 +50,6 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
#include "bgpd/bgp_network.h"
|
||||
#include "bgpd/bgp_mplsvpn.h"
|
||||
#include "bgpd/bgp_evpn.h"
|
||||
#include "bgpd/bgp_encap.h"
|
||||
#include "bgpd/bgp_evpn.h"
|
||||
#include "bgpd/bgp_advertise.h"
|
||||
#include "bgpd/bgp_vty.h"
|
||||
#include "bgpd/bgp_updgrp.h"
|
||||
@ -1129,7 +1127,10 @@ bgp_open_receive (struct peer *peer, bgp_size_t size)
|
||||
else
|
||||
peer->v_holdtime = send_holdtime;
|
||||
|
||||
peer->v_keepalive = peer->v_holdtime / 3;
|
||||
if (CHECK_FLAG (peer->config, PEER_CONFIG_TIMER))
|
||||
peer->v_keepalive = peer->keepalive;
|
||||
else
|
||||
peer->v_keepalive = peer->v_holdtime / 3;
|
||||
|
||||
/* Open option part parse. */
|
||||
if (optlen != 0)
|
||||
@ -1349,8 +1350,6 @@ bgp_nlri_parse (struct peer *peer, struct attr *attr, struct bgp_nlri *packet, i
|
||||
return bgp_nlri_parse_label (peer, mp_withdraw?NULL:attr, packet);
|
||||
case SAFI_MPLS_VPN:
|
||||
return bgp_nlri_parse_vpn (peer, mp_withdraw?NULL:attr, packet);
|
||||
case SAFI_ENCAP:
|
||||
return bgp_nlri_parse_encap (peer, mp_withdraw?NULL:attr, packet);
|
||||
case SAFI_EVPN:
|
||||
return bgp_nlri_parse_evpn (peer, attr, packet, mp_withdraw);
|
||||
}
|
||||
@ -1493,7 +1492,7 @@ bgp_update_receive (struct peer *peer, bgp_size_t size)
|
||||
BGP_DEBUG (update, UPDATE_IN) ||
|
||||
BGP_DEBUG (update, UPDATE_PREFIX))
|
||||
{
|
||||
ret = bgp_dump_attr (peer, &attr, peer->rcvd_attr_str, BUFSIZ);
|
||||
ret = bgp_dump_attr (&attr, peer->rcvd_attr_str, BUFSIZ);
|
||||
|
||||
if (attr_parse_ret == BGP_ATTR_PARSE_WITHDRAW)
|
||||
zlog_err ("%s rcvd UPDATE with errors in attr(s)!! Withdrawing route.",
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP packet management header.
|
||||
Copyright (C) 1999 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1999 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_PACKET_H
|
||||
#define _QUAGGA_BGP_PACKET_H
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* AS regular expression routine
|
||||
Copyright (C) 1999 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1999 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* AS regular expression routine
|
||||
Copyright (C) 1999 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1999 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_REGEX_H
|
||||
#define _QUAGGA_BGP_REGEX_H
|
||||
|
179
bgpd/bgp_route.c
179
bgpd/bgp_route.c
@ -1,23 +1,23 @@
|
||||
/* BGP routing information
|
||||
Copyright (C) 1996, 97, 98, 99 Kunihiro Ishiguro
|
||||
Copyright (C) 2016 Job Snijders <job@instituut.net>
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1996, 97, 98, 99 Kunihiro Ishiguro
|
||||
* Copyright (C) 2016 Job Snijders <job@instituut.net>
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
@ -54,7 +54,6 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
#include "bgpd/bgp_filter.h"
|
||||
#include "bgpd/bgp_fsm.h"
|
||||
#include "bgpd/bgp_mplsvpn.h"
|
||||
#include "bgpd/bgp_encap.h"
|
||||
#include "bgpd/bgp_nexthop.h"
|
||||
#include "bgpd/bgp_damp.h"
|
||||
#include "bgpd/bgp_advertise.h"
|
||||
@ -1270,7 +1269,7 @@ subgroup_announce_check (struct bgp_node *rn, struct bgp_info *ri,
|
||||
}
|
||||
|
||||
/* If it's labeled safi, make sure the route has a valid label. */
|
||||
if (bgp_labeled_safi(safi))
|
||||
if (safi == SAFI_LABELED_UNICAST)
|
||||
{
|
||||
u_char *tag = bgp_adv_label(rn, ri, peer, afi, safi);
|
||||
if (!bgp_is_valid_label(tag))
|
||||
@ -1941,9 +1940,9 @@ bgp_process_main (struct work_queue *wq, void *data)
|
||||
* Right now, since we only deal with per-prefix labels, it is not necessary
|
||||
* to do this upon changes to best path except of the label index changes.
|
||||
*/
|
||||
bgp_table_lock (bgp_node_table (rn));
|
||||
if (bgp_labeled_safi (safi))
|
||||
if (safi == SAFI_LABELED_UNICAST)
|
||||
{
|
||||
bgp_table_lock (bgp_node_table (rn));
|
||||
if (new_select)
|
||||
{
|
||||
if (!old_select ||
|
||||
@ -2839,7 +2838,7 @@ bgp_update (struct peer *peer, struct prefix *p, u_int32_t addpath_id,
|
||||
peer->rcvd_attr_printed = 1;
|
||||
}
|
||||
|
||||
zlog_debug ("%s rcvd %s%s ", peer->host,
|
||||
zlog_debug ("%s rcvd %s %s ", peer->host,
|
||||
bgp_debug_rdpfxpath2str (prd, p, addpath_id ? 1 : 0,
|
||||
addpath_id, pfx_buf, sizeof (pfx_buf)), label_buf);
|
||||
}
|
||||
@ -2848,7 +2847,7 @@ bgp_update (struct peer *peer, struct prefix *p, u_int32_t addpath_id,
|
||||
new = info_make(type, sub_type, 0, peer, attr_new, rn);
|
||||
|
||||
/* Update MPLS tag. */
|
||||
if (bgp_labeled_safi(safi) || safi == SAFI_EVPN)
|
||||
if (bgp_labeled_safi(safi))
|
||||
memcpy ((bgp_info_extra_get (new))->tag, tag, 3);
|
||||
|
||||
/* Update Overlay Index */
|
||||
@ -3902,10 +3901,9 @@ bgp_static_update (struct bgp *bgp, struct prefix *p,
|
||||
|
||||
/* Nexthop reachability check. */
|
||||
if (bgp_flag_check (bgp, BGP_FLAG_IMPORT_CHECK) &&
|
||||
safi == SAFI_UNICAST)
|
||||
(safi == SAFI_UNICAST || safi == SAFI_LABELED_UNICAST))
|
||||
{
|
||||
if (bgp_find_or_add_nexthop (bgp, afi, ri, NULL, 0) &&
|
||||
safi == SAFI_UNICAST)
|
||||
if (bgp_find_or_add_nexthop (bgp, afi, ri, NULL, 0))
|
||||
bgp_info_set_flag (rn, ri, BGP_INFO_VALID);
|
||||
else
|
||||
{
|
||||
@ -3943,7 +3941,8 @@ bgp_static_update (struct bgp *bgp, struct prefix *p,
|
||||
new = info_make(ZEBRA_ROUTE_BGP, BGP_ROUTE_STATIC, 0, bgp->peer_self, attr_new,
|
||||
rn);
|
||||
/* Nexthop reachability check. */
|
||||
if (bgp_flag_check (bgp, BGP_FLAG_IMPORT_CHECK))
|
||||
if (bgp_flag_check (bgp, BGP_FLAG_IMPORT_CHECK) &&
|
||||
(safi == SAFI_UNICAST || safi == SAFI_LABELED_UNICAST))
|
||||
{
|
||||
if (bgp_find_or_add_nexthop (bgp, afi, new, NULL, 0))
|
||||
bgp_info_set_flag (rn, new, BGP_INFO_VALID);
|
||||
@ -4086,7 +4085,7 @@ bgp_static_update_safi (struct bgp *bgp, struct prefix *p,
|
||||
|
||||
if ((safi == SAFI_EVPN) || (safi == SAFI_MPLS_VPN) || (safi == SAFI_ENCAP))
|
||||
{
|
||||
if (bgp_static->igpnexthop.s_addr)
|
||||
if (afi == AFI_IP)
|
||||
{
|
||||
bgp_attr_extra_get (&attr)->mp_nexthop_global_in = bgp_static->igpnexthop;
|
||||
bgp_attr_extra_get (&attr)->mp_nexthop_len = IPV4_MAX_BYTELEN;
|
||||
@ -4401,7 +4400,7 @@ bgp_static_add (struct bgp *bgp)
|
||||
|
||||
for (rm = bgp_table_top (table); rm; rm = bgp_route_next (rm))
|
||||
{
|
||||
bgp_static = rn->info;
|
||||
bgp_static = rm->info;
|
||||
bgp_static_update_safi (bgp, &rm->p, bgp_static, afi, safi);
|
||||
}
|
||||
}
|
||||
@ -4435,7 +4434,7 @@ bgp_static_delete (struct bgp *bgp)
|
||||
|
||||
for (rm = bgp_table_top (table); rm; rm = bgp_route_next (rm))
|
||||
{
|
||||
bgp_static = rn->info;
|
||||
bgp_static = rm->info;
|
||||
bgp_static_withdraw_safi (bgp, &rm->p,
|
||||
AFI_IP, safi,
|
||||
(struct prefix_rd *)&rn->p,
|
||||
@ -4462,6 +4461,8 @@ bgp_static_redo_import_check (struct bgp *bgp)
|
||||
afi_t afi;
|
||||
safi_t safi;
|
||||
struct bgp_node *rn;
|
||||
struct bgp_node *rm;
|
||||
struct bgp_table *table;
|
||||
struct bgp_static *bgp_static;
|
||||
|
||||
/* Use this flag to force reprocessing of the route */
|
||||
@ -4471,8 +4472,21 @@ bgp_static_redo_import_check (struct bgp *bgp)
|
||||
for (rn = bgp_table_top (bgp->route[afi][safi]); rn; rn = bgp_route_next (rn))
|
||||
if (rn->info != NULL)
|
||||
{
|
||||
bgp_static = rn->info;
|
||||
bgp_static_update (bgp, &rn->p, bgp_static, afi, safi);
|
||||
if ((safi == SAFI_MPLS_VPN) || (safi == SAFI_ENCAP) || (safi == SAFI_EVPN))
|
||||
{
|
||||
table = rn->info;
|
||||
|
||||
for (rm = bgp_table_top (table); rm; rm = bgp_route_next (rm))
|
||||
{
|
||||
bgp_static = rm->info;
|
||||
bgp_static_update_safi (bgp, &rm->p, bgp_static, afi, safi);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
bgp_static = rn->info;
|
||||
bgp_static_update (bgp, &rn->p, bgp_static, afi, safi);
|
||||
}
|
||||
}
|
||||
bgp_flag_unset(bgp, BGP_FLAG_FORCE_STATIC_PROCESS);
|
||||
}
|
||||
@ -4525,8 +4539,8 @@ bgp_purge_static_redist_routes (struct bgp *bgp)
|
||||
* I think it can probably be factored with bgp_static_set.
|
||||
*/
|
||||
int
|
||||
bgp_static_set_safi (safi_t safi, struct vty *vty, const char *ip_str,
|
||||
const char *rd_str, const char *tag_str,
|
||||
bgp_static_set_safi (afi_t afi, safi_t safi, struct vty *vty, const char *ip_str,
|
||||
const char *rd_str, const char *label_str,
|
||||
const char *rmap_str, int evpn_type, const char *esi, const char *gwip,
|
||||
const char *ethtag, const char *routermac)
|
||||
{
|
||||
@ -4539,14 +4553,8 @@ bgp_static_set_safi (safi_t safi, struct vty *vty, const char *ip_str,
|
||||
struct bgp_table *table;
|
||||
struct bgp_static *bgp_static;
|
||||
u_char tag[3];
|
||||
afi_t afi;
|
||||
struct prefix gw_ip;
|
||||
|
||||
if(safi == SAFI_EVPN)
|
||||
afi = AFI_L2VPN;
|
||||
else
|
||||
afi = AFI_IP;
|
||||
|
||||
/* validate ip prefix */
|
||||
ret = str2prefix (ip_str, &p);
|
||||
if (! ret)
|
||||
@ -4569,18 +4577,15 @@ bgp_static_set_safi (safi_t safi, struct vty *vty, const char *ip_str,
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
if (tag_str)
|
||||
if (label_str)
|
||||
{
|
||||
ret = str2tag (tag_str, tag);
|
||||
if (! ret)
|
||||
{
|
||||
vty_out (vty, "%% Malformed tag%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
}
|
||||
unsigned long label_val;
|
||||
VTY_GET_INTEGER_RANGE("Label/tag", label_val, label_str, 0, 16777215);
|
||||
encode_label (label_val, tag);
|
||||
}
|
||||
else
|
||||
{
|
||||
encode_label (0, tag);
|
||||
memset (tag, 0, sizeof(tag)); /* empty, not even BoS */
|
||||
}
|
||||
if (safi == SAFI_EVPN)
|
||||
{
|
||||
@ -4640,8 +4645,8 @@ bgp_static_set_safi (safi_t safi, struct vty *vty, const char *ip_str,
|
||||
if (rmap_str)
|
||||
{
|
||||
if (bgp_static->rmap.name)
|
||||
free (bgp_static->rmap.name);
|
||||
bgp_static->rmap.name = strdup (rmap_str);
|
||||
XFREE(MTYPE_ROUTE_MAP_NAME, bgp_static->rmap.name);
|
||||
bgp_static->rmap.name = XSTRDUP(MTYPE_ROUTE_MAP_NAME, rmap_str);
|
||||
bgp_static->rmap.map = route_map_lookup_by_name (rmap_str);
|
||||
}
|
||||
|
||||
@ -4671,8 +4676,8 @@ bgp_static_set_safi (safi_t safi, struct vty *vty, const char *ip_str,
|
||||
|
||||
/* Configure static BGP network. */
|
||||
int
|
||||
bgp_static_unset_safi(safi_t safi, struct vty *vty, const char *ip_str,
|
||||
const char *rd_str, const char *tag_str,
|
||||
bgp_static_unset_safi(afi_t afi, safi_t safi, struct vty *vty, const char *ip_str,
|
||||
const char *rd_str, const char *label_str,
|
||||
int evpn_type, const char *esi, const char *gwip, const char *ethtag)
|
||||
{
|
||||
VTY_DECLVAR_CONTEXT(bgp, bgp);
|
||||
@ -4684,12 +4689,6 @@ bgp_static_unset_safi(safi_t safi, struct vty *vty, const char *ip_str,
|
||||
struct bgp_table *table;
|
||||
struct bgp_static *bgp_static;
|
||||
u_char tag[3];
|
||||
afi_t afi;
|
||||
|
||||
if(safi == SAFI_EVPN)
|
||||
afi = AFI_L2VPN;
|
||||
else
|
||||
afi = AFI_IP;
|
||||
|
||||
/* Convert IP prefix string to struct prefix. */
|
||||
ret = str2prefix (ip_str, &p);
|
||||
@ -4712,11 +4711,15 @@ bgp_static_unset_safi(safi_t safi, struct vty *vty, const char *ip_str,
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
ret = str2tag (tag_str, tag);
|
||||
if (! ret)
|
||||
if (label_str)
|
||||
{
|
||||
vty_out (vty, "%% Malformed tag%s", VTY_NEWLINE);
|
||||
return CMD_WARNING;
|
||||
unsigned long label_val;
|
||||
VTY_GET_INTEGER_RANGE("Label/tag", label_val, label_str, 0, MPLS_LABEL_MAX);
|
||||
encode_label (label_val, tag);
|
||||
}
|
||||
else
|
||||
{
|
||||
memset (tag, 0, sizeof(tag)); /* empty, not even BoS */
|
||||
}
|
||||
|
||||
prn = bgp_node_get (bgp->route[afi][safi],
|
||||
@ -8055,12 +8058,6 @@ bgp_show (struct vty *vty, struct bgp *bgp, afi_t afi, safi_t safi,
|
||||
return bgp_show_mpls_vpn(vty, afi, NULL, type, output_arg,
|
||||
0, use_json);
|
||||
}
|
||||
if (safi == SAFI_ENCAP)
|
||||
{
|
||||
return bgp_show_encap(vty, afi, NULL, type, output_arg,
|
||||
0);
|
||||
}
|
||||
|
||||
|
||||
table = bgp->rib[afi][safi];
|
||||
|
||||
@ -8074,7 +8071,6 @@ bgp_show_all_instances_routes_vty (struct vty *vty, afi_t afi, safi_t safi,
|
||||
{
|
||||
struct listnode *node, *nnode;
|
||||
struct bgp *bgp;
|
||||
struct bgp_table *table;
|
||||
int is_first = 1;
|
||||
|
||||
if (use_json)
|
||||
@ -8100,9 +8096,7 @@ bgp_show_all_instances_routes_vty (struct vty *vty, afi_t afi, safi_t safi,
|
||||
? "Default" : bgp->name,
|
||||
VTY_NEWLINE);
|
||||
}
|
||||
table = bgp->rib[afi][safi];
|
||||
bgp_show_table (vty, bgp, table,
|
||||
bgp_show_type_normal, NULL, use_json);
|
||||
bgp_show (vty, bgp, afi, safi, bgp_show_type_normal, NULL, use_json);
|
||||
|
||||
}
|
||||
|
||||
@ -8444,7 +8438,7 @@ bgp_show_lcommunity_list (struct vty *vty, struct bgp *bgp, const char *lcom,
|
||||
|
||||
DEFUN (show_ip_bgp_large_community_list,
|
||||
show_ip_bgp_large_community_list_cmd,
|
||||
"show [ip] bgp [<view|vrf> WORD] [<ipv4|ipv6> [<unicast|multicast|vpn|encap|labeled-unicast>]] large-community-list <(1-500)|WORD> [json]",
|
||||
"show [ip] bgp [<view|vrf> WORD] [<ipv4|ipv6> [<unicast|multicast|vpn|labeled-unicast>]] large-community-list <(1-500)|WORD> [json]",
|
||||
SHOW_STR
|
||||
IP_STR
|
||||
BGP_STR
|
||||
@ -8455,7 +8449,6 @@ DEFUN (show_ip_bgp_large_community_list,
|
||||
"Address Family modifier\n"
|
||||
"Address Family modifier\n"
|
||||
"Address Family modifier\n"
|
||||
"Address Family modifier\n"
|
||||
"Display routes matching the large-community-list\n"
|
||||
"large-community-list number\n"
|
||||
"large-community-list name\n"
|
||||
@ -8491,7 +8484,7 @@ DEFUN (show_ip_bgp_large_community_list,
|
||||
}
|
||||
DEFUN (show_ip_bgp_large_community,
|
||||
show_ip_bgp_large_community_cmd,
|
||||
"show [ip] bgp [<view|vrf> WORD] [<ipv4|ipv6> [<unicast|multicast|vpn|encap|labeled-unicast>]] large-community [AA:BB:CC] [json]",
|
||||
"show [ip] bgp [<view|vrf> WORD] [<ipv4|ipv6> [<unicast|multicast|vpn|labeled-unicast>]] large-community [AA:BB:CC] [json]",
|
||||
SHOW_STR
|
||||
IP_STR
|
||||
BGP_STR
|
||||
@ -8502,7 +8495,6 @@ DEFUN (show_ip_bgp_large_community,
|
||||
"Address Family modifier\n"
|
||||
"Address Family modifier\n"
|
||||
"Address Family modifier\n"
|
||||
"Address Family modifier\n"
|
||||
"Display routes matching the large-communities\n"
|
||||
"List of large-community numbers\n"
|
||||
JSON_STR)
|
||||
@ -8654,12 +8646,10 @@ DEFUN (show_ip_bgp,
|
||||
}
|
||||
/* prefix-longer */
|
||||
if (argv_find(argv, argc, "A.B.C.D/M", &idx) || argv_find(argv, argc, "X:X::X:X/M", &idx))
|
||||
return bgp_show_prefix_longer (vty, bgp, argv[idx + 1]->arg, afi, safi, bgp_show_type_prefix_longer);
|
||||
return bgp_show_prefix_longer (vty, bgp, argv[idx]->arg, afi, safi, bgp_show_type_prefix_longer);
|
||||
|
||||
if (safi == SAFI_MPLS_VPN)
|
||||
return bgp_show_mpls_vpn (vty, afi, NULL, bgp_show_type_normal, NULL, 0, uj);
|
||||
else if (safi == SAFI_ENCAP)
|
||||
return bgp_show_encap (vty, afi, NULL, bgp_show_type_normal, NULL, 0);
|
||||
else
|
||||
return bgp_show (vty, bgp, afi, safi, sh_type, NULL, uj);
|
||||
}
|
||||
@ -8872,6 +8862,7 @@ bgp_show_community (struct vty *vty, struct bgp *bgp, int argc,
|
||||
int i;
|
||||
char *str;
|
||||
int first = 0;
|
||||
int ret = 0;
|
||||
|
||||
b = buffer_new (1024);
|
||||
for (i = 0; i < argc; i++)
|
||||
@ -8900,9 +8891,12 @@ bgp_show_community (struct vty *vty, struct bgp *bgp, int argc,
|
||||
return CMD_WARNING;
|
||||
}
|
||||
|
||||
return bgp_show (vty, bgp, afi, safi,
|
||||
(exact ? bgp_show_type_community_exact :
|
||||
bgp_show_type_community), com, 0);
|
||||
ret = bgp_show (vty, bgp, afi, safi,
|
||||
(exact ? bgp_show_type_community_exact :
|
||||
bgp_show_type_community), com, 0);
|
||||
community_free (com);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int
|
||||
@ -9443,7 +9437,7 @@ bgp_peer_counts (struct vty *vty, struct peer *peer, afi_t afi, safi_t safi, u_c
|
||||
|
||||
DEFUN (show_ip_bgp_instance_neighbor_prefix_counts,
|
||||
show_ip_bgp_instance_neighbor_prefix_counts_cmd,
|
||||
"show [ip] bgp [<view|vrf> WORD] [<ipv4|ipv6> [<unicast|multicast|vpn|encap|labeled-unicast>]] "
|
||||
"show [ip] bgp [<view|vrf> WORD] [<ipv4|ipv6> [<unicast|multicast|vpn|labeled-unicast>]] "
|
||||
"neighbors <A.B.C.D|X:X::X:X|WORD> prefix-counts [json]",
|
||||
SHOW_STR
|
||||
IP_STR
|
||||
@ -10664,10 +10658,19 @@ bgp_config_write_network_vpn (struct vty *vty, struct bgp *bgp,
|
||||
prefix_rd2str (prd, rdbuf, RD_ADDRSTRLEN);
|
||||
label = decode_label (bgp_static->tag);
|
||||
|
||||
vty_out (vty, " network %s/%d rd %s tag %d",
|
||||
vty_out (vty, " network %s/%d rd %s",
|
||||
inet_ntop (p->family, &p->u.prefix, buf, SU_ADDRSTRLEN),
|
||||
p->prefixlen,
|
||||
rdbuf, label);
|
||||
p->prefixlen, rdbuf);
|
||||
if (safi == SAFI_MPLS_VPN)
|
||||
vty_out (vty, " label %u", label);
|
||||
|
||||
if (bgp_static->rmap.name)
|
||||
vty_out (vty, " route-map %s", bgp_static->rmap.name);
|
||||
else
|
||||
{
|
||||
if (bgp_static->backdoor)
|
||||
vty_out (vty, " backdoor");
|
||||
}
|
||||
vty_out (vty, "%s", VTY_NEWLINE);
|
||||
}
|
||||
return 0;
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP routing information base
|
||||
Copyright (C) 1996, 97, 98, 2000 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1996, 97, 98, 2000 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_ROUTE_H
|
||||
#define _QUAGGA_BGP_ROUTE_H
|
||||
@ -333,11 +333,11 @@ extern void bgp_static_update (struct bgp *, struct prefix *, struct bgp_static
|
||||
afi_t, safi_t);
|
||||
extern void bgp_static_withdraw (struct bgp *, struct prefix *, afi_t, safi_t);
|
||||
|
||||
extern int bgp_static_set_safi (safi_t safi, struct vty *vty, const char *,
|
||||
extern int bgp_static_set_safi (afi_t afi, safi_t safi, struct vty *vty, const char *,
|
||||
const char *, const char *, const char *,
|
||||
int, const char *, const char *, const char *, const char *);
|
||||
|
||||
extern int bgp_static_unset_safi (safi_t safi, struct vty *, const char *,
|
||||
extern int bgp_static_unset_safi (afi_t afi, safi_t safi, struct vty *, const char *,
|
||||
const char *, const char *,
|
||||
int, const char *, const char *, const char *);
|
||||
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* Route map function of bgpd.
|
||||
Copyright (C) 1998, 1999 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1998, 1999 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP4 SNMP support
|
||||
Copyright (C) 1999, 2000 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1999, 2000 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP routing table
|
||||
Copyright (C) 1998, 2001 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1998, 2001 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP routing table
|
||||
Copyright (C) 1998, 2001 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1998, 2001 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_TABLE_H
|
||||
#define _QUAGGA_BGP_TABLE_H
|
||||
|
@ -19,10 +19,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
* Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
@ -19,10 +19,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
* Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_UPDGRP_H
|
||||
|
@ -21,10 +21,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
* Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
@ -19,10 +19,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
* Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
* 02111-1307, USA.
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
@ -429,21 +428,33 @@ bpacket_reformat_for_peer (struct bpacket *pkt, struct peer_af *paf)
|
||||
nhafi = BGP_NEXTHOP_AFI_FROM_NHLEN(nhlen);
|
||||
if (peer_cap_enhe(peer, paf->afi, paf->safi))
|
||||
nhafi = AFI_IP6;
|
||||
if (paf->safi == SAFI_MPLS_VPN && /* if VPN && not global */
|
||||
nhlen != BGP_ATTR_NHLEN_VPNV6_GLOBAL_AND_LL)
|
||||
nhafi = AFI_MAX; /* no change allowed */
|
||||
}
|
||||
|
||||
if (nhafi == AFI_IP)
|
||||
{
|
||||
struct in_addr v4nh, *mod_v4nh;
|
||||
int nh_modified = 0;
|
||||
size_t offset_nh = vec->offset + 1;
|
||||
|
||||
route_map_sets_nh =
|
||||
(CHECK_FLAG (vec->flags, BPKT_ATTRVEC_FLAGS_RMAP_IPV4_NH_CHANGED) ||
|
||||
CHECK_FLAG (vec->flags, BPKT_ATTRVEC_FLAGS_RMAP_NH_PEER_ADDRESS));
|
||||
|
||||
stream_get_from (&v4nh, s, vec->offset + 1, 4);
|
||||
switch (nhlen)
|
||||
{
|
||||
case BGP_ATTR_NHLEN_IPV4:
|
||||
break;
|
||||
case BGP_ATTR_NHLEN_VPNV4:
|
||||
offset_nh += 8;
|
||||
break;
|
||||
default:
|
||||
/* TODO: handle IPv6 nexthops */
|
||||
zlog_warn ("%s: %s: invalid MP nexthop length (AFI IP): %u",
|
||||
__func__, peer->host, nhlen);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
stream_get_from (&v4nh, s, offset_nh, IPV4_MAX_BYTELEN);
|
||||
mod_v4nh = &v4nh;
|
||||
|
||||
/*
|
||||
@ -484,7 +495,7 @@ bpacket_reformat_for_peer (struct bpacket *pkt, struct peer_af *paf)
|
||||
}
|
||||
|
||||
if (nh_modified) /* allow for VPN RD */
|
||||
stream_put_in_addr_at (s, vec->offset + 1 + nhlen - 4, mod_v4nh);
|
||||
stream_put_in_addr_at (s, offset_nh, mod_v4nh);
|
||||
|
||||
if (bgp_debug_update(peer, NULL, NULL, 0))
|
||||
zlog_debug ("u%" PRIu64 ":s%" PRIu64 " %s send UPDATE w/ nexthop %s%s",
|
||||
@ -497,6 +508,8 @@ bpacket_reformat_for_peer (struct bpacket *pkt, struct peer_af *paf)
|
||||
struct in6_addr v6nhglobal, *mod_v6nhg;
|
||||
struct in6_addr v6nhlocal, *mod_v6nhl;
|
||||
int gnh_modified, lnh_modified;
|
||||
size_t offset_nhglobal = vec->offset + 1;
|
||||
size_t offset_nhlocal = vec->offset + 1;
|
||||
|
||||
gnh_modified = lnh_modified = 0;
|
||||
mod_v6nhg = &v6nhglobal;
|
||||
@ -511,7 +524,28 @@ bpacket_reformat_for_peer (struct bpacket *pkt, struct peer_af *paf)
|
||||
* additional work being to handle 1 or 2 nexthops. Also, 3rd
|
||||
* party nexthop is not propagated for EBGP right now.
|
||||
*/
|
||||
stream_get_from (&v6nhglobal, s, vec->offset + 1, 16);
|
||||
switch (nhlen)
|
||||
{
|
||||
case BGP_ATTR_NHLEN_IPV6_GLOBAL:
|
||||
break;
|
||||
case BGP_ATTR_NHLEN_IPV6_GLOBAL_AND_LL:
|
||||
offset_nhlocal += IPV6_MAX_BYTELEN;
|
||||
break;
|
||||
case BGP_ATTR_NHLEN_VPNV6_GLOBAL:
|
||||
offset_nhglobal += 8;
|
||||
break;
|
||||
case BGP_ATTR_NHLEN_VPNV6_GLOBAL_AND_LL:
|
||||
offset_nhglobal += 8;
|
||||
offset_nhlocal += 8 * 2 + IPV6_MAX_BYTELEN;
|
||||
break;
|
||||
default:
|
||||
/* TODO: handle IPv4 nexthops */
|
||||
zlog_warn ("%s: %s: invalid MP nexthop length (AFI IP6): %u",
|
||||
__func__, peer->host, nhlen);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
stream_get_from (&v6nhglobal, s, offset_nhglobal, IPV6_MAX_BYTELEN);
|
||||
if (route_map_sets_nh)
|
||||
{
|
||||
if (CHECK_FLAG(vec->flags,
|
||||
@ -538,9 +572,10 @@ bpacket_reformat_for_peer (struct bpacket *pkt, struct peer_af *paf)
|
||||
}
|
||||
|
||||
|
||||
if (nhlen == 32 || nhlen == 48) /* 48 == VPN */
|
||||
if (nhlen == BGP_ATTR_NHLEN_IPV6_GLOBAL_AND_LL ||
|
||||
nhlen == BGP_ATTR_NHLEN_VPNV6_GLOBAL_AND_LL)
|
||||
{
|
||||
stream_get_from (&v6nhlocal, s, vec->offset + 1 + (nhlen-IPV6_MAX_BYTELEN), IPV6_MAX_BYTELEN);
|
||||
stream_get_from (&v6nhlocal, s, offset_nhlocal, IPV6_MAX_BYTELEN);
|
||||
if (IN6_IS_ADDR_UNSPECIFIED (&v6nhlocal))
|
||||
{
|
||||
mod_v6nhl = &peer->nexthop.v6_local;
|
||||
@ -549,9 +584,9 @@ bpacket_reformat_for_peer (struct bpacket *pkt, struct peer_af *paf)
|
||||
}
|
||||
|
||||
if (gnh_modified)
|
||||
stream_put_in6_addr_at (s, vec->offset + 1, mod_v6nhg);
|
||||
stream_put_in6_addr_at (s, offset_nhglobal, mod_v6nhg);
|
||||
if (lnh_modified)
|
||||
stream_put_in6_addr_at (s, vec->offset + 1 + (nhlen-IPV6_MAX_BYTELEN), mod_v6nhl);
|
||||
stream_put_in6_addr_at (s, offset_nhlocal, mod_v6nhl);
|
||||
|
||||
if (bgp_debug_update(peer, NULL, NULL, 0))
|
||||
{
|
||||
@ -749,7 +784,7 @@ subgroup_update_packet (struct update_subgroup *subgrp)
|
||||
{
|
||||
memset (send_attr_str, 0, BUFSIZ);
|
||||
send_attr_printed = 0;
|
||||
bgp_dump_attr (peer, adv->baa->attr, send_attr_str, BUFSIZ);
|
||||
bgp_dump_attr (adv->baa->attr, send_attr_str, BUFSIZ);
|
||||
}
|
||||
}
|
||||
|
||||
@ -763,14 +798,18 @@ subgroup_update_packet (struct update_subgroup *subgrp)
|
||||
|
||||
if (rn->prn)
|
||||
prd = (struct prefix_rd *) &rn->prn->p;
|
||||
tag = bgp_adv_label(rn, binfo, peer, afi, safi);
|
||||
|
||||
if (safi == SAFI_LABELED_UNICAST)
|
||||
tag = bgp_adv_label(rn, binfo, peer, afi, safi);
|
||||
else
|
||||
if (binfo && binfo->extra)
|
||||
tag = binfo->extra->tag;
|
||||
|
||||
if (bgp_labeled_safi(safi))
|
||||
sprintf (label_buf, "label %u", label_pton(tag));
|
||||
|
||||
if (stream_empty (snlri))
|
||||
mpattrlen_pos = bgp_packet_mpattr_start (snlri, afi, safi,
|
||||
(peer_cap_enhe(peer, afi, safi) ? AFI_IP6 :
|
||||
AFI_MAX), /* get from NH */
|
||||
mpattrlen_pos = bgp_packet_mpattr_start (snlri, peer, afi, safi,
|
||||
&vecarr, adv->baa->attr);
|
||||
|
||||
bgp_packet_mpattr_prefix (snlri, afi, safi, &rn->p, prd,
|
||||
@ -1043,7 +1082,7 @@ subgroup_default_update_packet (struct update_subgroup *subgrp,
|
||||
char tx_id_buf[30];
|
||||
attrstr[0] = '\0';
|
||||
|
||||
bgp_dump_attr (peer, attr, attrstr, BUFSIZ);
|
||||
bgp_dump_attr (attr, attrstr, BUFSIZ);
|
||||
bgp_info_addpath_tx_str (addpath_encode, BGP_ADDPATH_TX_ID_FOR_DEFAULT_ORIGINATE, tx_id_buf);
|
||||
zlog_debug ("u%" PRIu64 ":s%" PRIu64 " send UPDATE %s%s %s",
|
||||
(SUBGRP_UPDGRP (subgrp))->id, subgrp->id,
|
||||
|
@ -11,10 +11,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_VNC_TYPES_H
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* VPN Related functions
|
||||
Copyright (C) 2017 6WIND
|
||||
|
||||
This file is part of FRRouting
|
||||
|
||||
FRRouting is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
FRRouting is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with FRRouting; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 2017 6WIND
|
||||
*
|
||||
* This file is part of FRRouting
|
||||
*
|
||||
* FRRouting is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* FRRouting is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
#include "command.h"
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* VPN common functions to MP-BGP
|
||||
Copyright (C) 2017 6WIND
|
||||
|
||||
This file is part of FRRouting.
|
||||
|
||||
FRRouting is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
FRRouting is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with FRRouting; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 2017 6WIND
|
||||
*
|
||||
* This file is part of FRRouting.
|
||||
*
|
||||
* FRRouting is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* FRRouting is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _FRR_BGP_VPN_H
|
||||
#define _FRR_BGP_VPN_H
|
||||
|
296
bgpd/bgp_vty.c
296
bgpd/bgp_vty.c
@ -1,22 +1,22 @@
|
||||
/* BGP VTY interface.
|
||||
Copyright (C) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
@ -60,16 +60,7 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
|
||||
static struct peer_group *
|
||||
listen_range_exists (struct bgp *bgp, struct prefix *range, int exact);
|
||||
#if 0
|
||||
#define INSTALL_CMD_ON_AF_NODES(cmd) \
|
||||
install_element(BGP_IPV4_NODE, cmd); \
|
||||
install_element(BGP_IPV4M_NODE, cmd); \
|
||||
install_element(BGP_IPV4L_NODE, cmd); \
|
||||
install_element(BGP_IPV6_NODE, cmd); \
|
||||
install_element(BGP_IPV6M_NODE, cmd); \
|
||||
install_element(BGP_IPV6L_NODE, cmd); \
|
||||
install_element(BGP_VPNV4_NODE, cmd);
|
||||
#endif
|
||||
|
||||
static enum node_type
|
||||
bgp_node_type (afi_t afi, safi_t safi)
|
||||
{
|
||||
@ -90,9 +81,6 @@ bgp_node_type (afi_t afi, safi_t safi)
|
||||
case SAFI_MPLS_VPN:
|
||||
return BGP_VPNV4_NODE;
|
||||
break;
|
||||
case SAFI_ENCAP:
|
||||
return BGP_ENCAP_NODE;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case AFI_IP6:
|
||||
@ -110,9 +98,6 @@ bgp_node_type (afi_t afi, safi_t safi)
|
||||
case SAFI_MPLS_VPN:
|
||||
return BGP_VPNV6_NODE;
|
||||
break;
|
||||
case SAFI_ENCAP:
|
||||
return BGP_ENCAP_NODE;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case AFI_L2VPN:
|
||||
@ -139,7 +124,6 @@ bgp_node_afi (struct vty *vty)
|
||||
case BGP_IPV6M_NODE:
|
||||
case BGP_IPV6L_NODE:
|
||||
case BGP_VPNV6_NODE:
|
||||
case BGP_ENCAPV6_NODE:
|
||||
afi = AFI_IP6;
|
||||
break;
|
||||
case BGP_EVPN_NODE:
|
||||
@ -160,10 +144,6 @@ bgp_node_safi (struct vty *vty)
|
||||
safi_t safi;
|
||||
switch (vty->node)
|
||||
{
|
||||
case BGP_ENCAP_NODE:
|
||||
case BGP_ENCAPV6_NODE:
|
||||
safi = SAFI_ENCAP;
|
||||
break;
|
||||
case BGP_VPNV4_NODE:
|
||||
case BGP_VPNV6_NODE:
|
||||
safi = SAFI_MPLS_VPN;
|
||||
@ -232,7 +212,7 @@ argv_find_and_parse_afi(struct cmd_token **argv, int argc, int *index, afi_t *af
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* supports <unicast|multicast|vpn|encap|labeled-unicast> */
|
||||
/* supports <unicast|multicast|vpn|labeled-unicast> */
|
||||
safi_t
|
||||
bgp_vty_safi_from_arg(const char *safi_str)
|
||||
{
|
||||
@ -241,8 +221,6 @@ bgp_vty_safi_from_arg(const char *safi_str)
|
||||
safi = SAFI_MULTICAST;
|
||||
else if (strncmp (safi_str, "u", 1) == 0)
|
||||
safi = SAFI_UNICAST;
|
||||
else if (strncmp (safi_str, "e", 1) == 0)
|
||||
safi = SAFI_ENCAP;
|
||||
else if (strncmp (safi_str, "v", 1) == 0)
|
||||
safi = SAFI_MPLS_VPN;
|
||||
else if (strncmp (safi_str, "l", 1) == 0)
|
||||
@ -278,12 +256,6 @@ argv_find_and_parse_safi (struct cmd_token **argv, int argc, int *index, safi_t
|
||||
if (safi)
|
||||
*safi = SAFI_MPLS_VPN;
|
||||
}
|
||||
else if (argv_find (argv, argc, "encap", index))
|
||||
{
|
||||
ret = 1;
|
||||
if (safi)
|
||||
*safi = SAFI_ENCAP;
|
||||
}
|
||||
else if (argv_find (argv, argc, "evpn", index))
|
||||
{
|
||||
ret = 1;
|
||||
@ -303,12 +275,12 @@ argv_find_and_parse_safi (struct cmd_token **argv, int argc, int *index, safi_t
|
||||
* that is being parsed.
|
||||
*
|
||||
* The show commands are generally of the form:
|
||||
* "show [ip] bgp [<view|vrf> WORD] [<ipv4|ipv6> [<unicast|multicast|vpn|encap|labeled-unicast>]] ..."
|
||||
* "show [ip] bgp [<view|vrf> WORD] [<ipv4|ipv6> [<unicast|multicast|vpn|labeled-unicast>]] ..."
|
||||
*
|
||||
* Since we use argv_find if the show command in particular doesn't have:
|
||||
* [ip]
|
||||
* [<view|vrf> WORD]
|
||||
* [<ipv4|ipv6> [<unicast|multicast|vpn|encap|labeled-unicast>]]
|
||||
* [<ipv4|ipv6> [<unicast|multicast|vpn|labeled-unicast>]]
|
||||
* The command parsing should still be ok.
|
||||
*
|
||||
* vty -> The vty for the command so we can output some useful data in
|
||||
@ -2821,7 +2793,12 @@ peer_conf_interface_get (struct vty *vty, const char *conf_if, afi_t afi,
|
||||
}
|
||||
|
||||
peer = peer_lookup_by_conf_if (bgp, conf_if);
|
||||
if (!peer)
|
||||
if (peer)
|
||||
{
|
||||
if (as_str)
|
||||
ret = peer_remote_as (bgp, &su, conf_if, &as, as_type, afi, safi);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (bgp_flag_check (bgp, BGP_FLAG_NO_DEFAULT_IPV4)
|
||||
&& afi == AFI_IP && safi == SAFI_UNICAST)
|
||||
@ -2831,7 +2808,10 @@ peer_conf_interface_get (struct vty *vty, const char *conf_if, afi_t afi,
|
||||
peer = peer_create (NULL, conf_if, bgp, bgp->as, as, as_type, afi, safi,
|
||||
NULL);
|
||||
|
||||
if (peer && v6only)
|
||||
if (!peer)
|
||||
return CMD_WARNING;
|
||||
|
||||
if (v6only)
|
||||
SET_FLAG(peer->flags, PEER_FLAG_IFPEER_V6ONLY);
|
||||
|
||||
/* Request zebra to initiate IPv6 RAs on this interface. We do this
|
||||
@ -2840,13 +2820,11 @@ peer_conf_interface_get (struct vty *vty, const char *conf_if, afi_t afi,
|
||||
* gets deleted later etc.)
|
||||
*/
|
||||
if (peer->ifp)
|
||||
{
|
||||
bgp_zebra_initiate_radv (bgp, peer);
|
||||
}
|
||||
peer_flag_set (peer, PEER_FLAG_CAPABILITY_ENHE);
|
||||
bgp_zebra_initiate_radv (bgp, peer);
|
||||
}
|
||||
else if ((v6only && !CHECK_FLAG(peer->flags, PEER_FLAG_IFPEER_V6ONLY)) ||
|
||||
(!v6only && CHECK_FLAG(peer->flags, PEER_FLAG_IFPEER_V6ONLY)))
|
||||
|
||||
if ((v6only && !CHECK_FLAG(peer->flags, PEER_FLAG_IFPEER_V6ONLY)) ||
|
||||
(!v6only && CHECK_FLAG(peer->flags, PEER_FLAG_IFPEER_V6ONLY)))
|
||||
{
|
||||
if (v6only)
|
||||
SET_FLAG(peer->flags, PEER_FLAG_IFPEER_V6ONLY);
|
||||
@ -2864,8 +2842,8 @@ peer_conf_interface_get (struct vty *vty, const char *conf_if, afi_t afi,
|
||||
bgp_session_reset(peer);
|
||||
}
|
||||
|
||||
if (!peer)
|
||||
return CMD_WARNING;
|
||||
if (!CHECK_FLAG (peer->flags, PEER_FLAG_CAPABILITY_ENHE))
|
||||
peer_flag_set (peer, PEER_FLAG_CAPABILITY_ENHE);
|
||||
|
||||
if (peer_group_name)
|
||||
{
|
||||
@ -6348,7 +6326,7 @@ ALIAS_HIDDEN (no_neighbor_addpath_tx_bestpath_per_as,
|
||||
|
||||
DEFUN_NOSH (address_family_ipv4_safi,
|
||||
address_family_ipv4_safi_cmd,
|
||||
"address-family ipv4 [<unicast|multicast|vpn|encap|labeled-unicast>]",
|
||||
"address-family ipv4 [<unicast|multicast|vpn|labeled-unicast>]",
|
||||
"Enter Address Family command mode\n"
|
||||
"Address Family\n"
|
||||
BGP_SAFI_HELP_STR)
|
||||
@ -6367,7 +6345,7 @@ DEFUN_NOSH (address_family_ipv4_safi,
|
||||
|
||||
DEFUN_NOSH (address_family_ipv6_safi,
|
||||
address_family_ipv6_safi_cmd,
|
||||
"address-family ipv6 [<unicast|multicast|vpn|encap|labeled-unicast>]",
|
||||
"address-family ipv6 [<unicast|multicast|vpn|labeled-unicast>]",
|
||||
"Enter Address Family command mode\n"
|
||||
"Address Family\n"
|
||||
BGP_SAFI_HELP_STR)
|
||||
@ -6407,28 +6385,6 @@ DEFUN_NOSH (address_family_vpnv6,
|
||||
}
|
||||
#endif
|
||||
|
||||
DEFUN_NOSH (address_family_encap,
|
||||
address_family_encap_cmd,
|
||||
"address-family <encap|encapv4>",
|
||||
"Enter Address Family command mode\n"
|
||||
"Address Family\n"
|
||||
"Address Family\n")
|
||||
{
|
||||
vty->node = BGP_ENCAP_NODE;
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
DEFUN_NOSH (address_family_encapv6,
|
||||
address_family_encapv6_cmd,
|
||||
"address-family encapv6",
|
||||
"Enter Address Family command mode\n"
|
||||
"Address Family\n")
|
||||
{
|
||||
vty->node = BGP_ENCAPV6_NODE;
|
||||
return CMD_SUCCESS;
|
||||
}
|
||||
|
||||
DEFUN_NOSH (address_family_evpn,
|
||||
address_family_evpn_cmd,
|
||||
"address-family <l2vpn evpn>",
|
||||
@ -6454,8 +6410,6 @@ DEFUN_NOSH (exit_address_family,
|
||||
|| vty->node == BGP_IPV6M_NODE
|
||||
|| vty->node == BGP_IPV6L_NODE
|
||||
|| vty->node == BGP_VPNV6_NODE
|
||||
|| vty->node == BGP_ENCAP_NODE
|
||||
|| vty->node == BGP_ENCAPV6_NODE
|
||||
|| vty->node == BGP_EVPN_NODE)
|
||||
vty->node = BGP_NODE;
|
||||
return CMD_SUCCESS;
|
||||
@ -8115,6 +8069,7 @@ bgp_show_peer (struct vty *vty, struct peer *p, u_char use_json, json_object *js
|
||||
u_int16_t i;
|
||||
u_char *msg;
|
||||
json_object *json_neigh = NULL;
|
||||
time_t epoch_tbuf;
|
||||
|
||||
bgp = p->bgp;
|
||||
|
||||
@ -8304,8 +8259,11 @@ bgp_show_peer (struct vty *vty, struct peer *p, u_char use_json, json_object *js
|
||||
uptime = bgp_clock();
|
||||
uptime -= p->uptime;
|
||||
tm = gmtime(&uptime);
|
||||
epoch_tbuf = time(NULL) - uptime;
|
||||
|
||||
json_object_int_add(json_neigh, "bgpTimerUp", (tm->tm_sec * 1000) + (tm->tm_min * 60000) + (tm->tm_hour * 3600000));
|
||||
json_object_string_add(json_neigh, "bgpTimerUpString", peer_uptime (p->uptime, timebuf, BGP_UPTIME_LEN, 0, NULL));
|
||||
json_object_int_add(json_neigh, "bgpTimerUpEstablishedEpoch", epoch_tbuf);
|
||||
}
|
||||
|
||||
else if (p->status == Active)
|
||||
@ -9236,6 +9194,8 @@ bgp_show_peer (struct vty *vty, struct peer *p, u_char use_json, json_object *js
|
||||
json_object_int_add(json_neigh, "mraiInterval", p->v_routeadv);
|
||||
json_object_int_add(json_neigh, "mraiTimerExpireInMsecs", thread_timer_remain_second (p->t_routeadv) * 1000);
|
||||
}
|
||||
if (p->password)
|
||||
json_object_int_add(json_neigh, "authenticationEnabled", 1);
|
||||
|
||||
if (p->t_read)
|
||||
json_object_string_add(json_neigh, "readThread", "on");
|
||||
@ -9263,6 +9223,8 @@ bgp_show_peer (struct vty *vty, struct peer *p, u_char use_json, json_object *js
|
||||
vty_out (vty, "MRAI (interval %u) timer expires in %ld seconds%s",
|
||||
p->v_routeadv, thread_timer_remain_second (p->t_routeadv),
|
||||
VTY_NEWLINE);
|
||||
if (p->password)
|
||||
vty_out (vty, "Peer Authentication Enabled%s", VTY_NEWLINE);
|
||||
|
||||
vty_out (vty, "Read thread: %s Write thread: %s%s",
|
||||
p->t_read ? "on" : "off",
|
||||
@ -10898,20 +10860,6 @@ static struct cmd_node bgp_vpnv6_node =
|
||||
1
|
||||
};
|
||||
|
||||
static struct cmd_node bgp_encap_node =
|
||||
{
|
||||
BGP_ENCAP_NODE,
|
||||
"%s(config-router-af-encap)# ",
|
||||
1
|
||||
};
|
||||
|
||||
static struct cmd_node bgp_encapv6_node =
|
||||
{
|
||||
BGP_ENCAPV6_NODE,
|
||||
"%s(config-router-af-encapv6)# ",
|
||||
1
|
||||
};
|
||||
|
||||
static struct cmd_node bgp_evpn_node =
|
||||
{
|
||||
BGP_EVPN_NODE,
|
||||
@ -10921,9 +10869,62 @@ static struct cmd_node bgp_evpn_node =
|
||||
|
||||
static void community_list_vty (void);
|
||||
|
||||
static void
|
||||
bgp_ac_neighbor (vector comps, struct cmd_token *token)
|
||||
{
|
||||
struct bgp *bgp;
|
||||
struct peer *peer;
|
||||
struct peer_group *group;
|
||||
struct listnode *lnbgp, *lnpeer;
|
||||
|
||||
for (ALL_LIST_ELEMENTS_RO (bm->bgp, lnbgp, bgp))
|
||||
{
|
||||
for (ALL_LIST_ELEMENTS_RO (bgp->peer, lnpeer, peer))
|
||||
{
|
||||
/* only provide suggestions on the appropriate input token type,
|
||||
* they'll otherwise show up multiple times */
|
||||
enum cmd_token_type match_type;
|
||||
char *name = peer->host;
|
||||
|
||||
if (peer->conf_if)
|
||||
{
|
||||
match_type = VARIABLE_TKN;
|
||||
name = peer->conf_if;
|
||||
}
|
||||
else if (strchr(peer->host, ':'))
|
||||
match_type = IPV6_TKN;
|
||||
else
|
||||
match_type = IPV4_TKN;
|
||||
|
||||
if (token->type != match_type)
|
||||
continue;
|
||||
|
||||
vector_set(comps, XSTRDUP(MTYPE_COMPLETION, name));
|
||||
}
|
||||
|
||||
if (token->type == VARIABLE_TKN)
|
||||
for (ALL_LIST_ELEMENTS_RO (bgp->group, lnpeer, group))
|
||||
vector_set(comps, XSTRDUP(MTYPE_COMPLETION, group->name));
|
||||
}
|
||||
}
|
||||
|
||||
static const struct cmd_variable_handler bgp_var_neighbor[] = {
|
||||
{
|
||||
.varname = "neighbor",
|
||||
.completions = bgp_ac_neighbor
|
||||
}, {
|
||||
.varname = "neighbors",
|
||||
.completions = bgp_ac_neighbor
|
||||
}, {
|
||||
.completions = NULL
|
||||
}
|
||||
};
|
||||
|
||||
void
|
||||
bgp_vty_init (void)
|
||||
{
|
||||
cmd_variable_handler_register(bgp_var_neighbor);
|
||||
|
||||
/* Install bgp top node. */
|
||||
install_node (&bgp_node, bgp_config_write);
|
||||
install_node (&bgp_ipv4_unicast_node, NULL);
|
||||
@ -10934,8 +10935,6 @@ bgp_vty_init (void)
|
||||
install_node (&bgp_ipv6_labeled_unicast_node, NULL);
|
||||
install_node (&bgp_vpnv4_node, NULL);
|
||||
install_node (&bgp_vpnv6_node, NULL);
|
||||
install_node (&bgp_encap_node, NULL);
|
||||
install_node (&bgp_encapv6_node, NULL);
|
||||
install_node (&bgp_evpn_node, NULL);
|
||||
|
||||
/* Install default VTY commands to new nodes. */
|
||||
@ -10948,8 +10947,6 @@ bgp_vty_init (void)
|
||||
install_default (BGP_IPV6L_NODE);
|
||||
install_default (BGP_VPNV4_NODE);
|
||||
install_default (BGP_VPNV6_NODE);
|
||||
install_default (BGP_ENCAP_NODE);
|
||||
install_default (BGP_ENCAPV6_NODE);
|
||||
install_default (BGP_EVPN_NODE);
|
||||
|
||||
/* "bgp multiple-instance" commands. */
|
||||
@ -11176,8 +11173,6 @@ bgp_vty_init (void)
|
||||
install_element (BGP_IPV6L_NODE, &neighbor_activate_cmd);
|
||||
install_element (BGP_VPNV4_NODE, &neighbor_activate_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &neighbor_activate_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &neighbor_activate_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &neighbor_activate_cmd);
|
||||
install_element (BGP_EVPN_NODE, &neighbor_activate_cmd);
|
||||
|
||||
/* "no neighbor activate" commands. */
|
||||
@ -11190,8 +11185,6 @@ bgp_vty_init (void)
|
||||
install_element (BGP_IPV6L_NODE, &no_neighbor_activate_cmd);
|
||||
install_element (BGP_VPNV4_NODE, &no_neighbor_activate_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &no_neighbor_activate_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &no_neighbor_activate_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &no_neighbor_activate_cmd);
|
||||
install_element (BGP_EVPN_NODE, &no_neighbor_activate_cmd);
|
||||
|
||||
/* "neighbor peer-group" set commands. */
|
||||
@ -11204,8 +11197,6 @@ bgp_vty_init (void)
|
||||
install_element (BGP_IPV6L_NODE, &neighbor_set_peer_group_hidden_cmd);
|
||||
install_element (BGP_VPNV4_NODE, &neighbor_set_peer_group_hidden_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &neighbor_set_peer_group_hidden_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &neighbor_set_peer_group_hidden_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &neighbor_set_peer_group_hidden_cmd);
|
||||
|
||||
/* "no neighbor peer-group unset" commands. */
|
||||
install_element (BGP_NODE, &no_neighbor_set_peer_group_cmd);
|
||||
@ -11217,8 +11208,6 @@ bgp_vty_init (void)
|
||||
install_element (BGP_IPV6L_NODE, &no_neighbor_set_peer_group_hidden_cmd);
|
||||
install_element (BGP_VPNV4_NODE, &no_neighbor_set_peer_group_hidden_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &no_neighbor_set_peer_group_hidden_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &no_neighbor_set_peer_group_hidden_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &no_neighbor_set_peer_group_hidden_cmd);
|
||||
|
||||
/* "neighbor softreconfiguration inbound" commands.*/
|
||||
install_element (BGP_NODE, &neighbor_soft_reconfiguration_hidden_cmd);
|
||||
@ -11239,10 +11228,6 @@ bgp_vty_init (void)
|
||||
install_element (BGP_VPNV4_NODE, &no_neighbor_soft_reconfiguration_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &neighbor_soft_reconfiguration_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &no_neighbor_soft_reconfiguration_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &neighbor_soft_reconfiguration_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &no_neighbor_soft_reconfiguration_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &neighbor_soft_reconfiguration_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &no_neighbor_soft_reconfiguration_cmd);
|
||||
|
||||
/* "neighbor attribute-unchanged" commands. */
|
||||
install_element (BGP_NODE, &neighbor_attr_unchanged_hidden_cmd);
|
||||
@ -11264,12 +11249,6 @@ bgp_vty_init (void)
|
||||
install_element (BGP_VPNV6_NODE, &neighbor_attr_unchanged_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &no_neighbor_attr_unchanged_cmd);
|
||||
|
||||
install_element (BGP_ENCAP_NODE, &neighbor_attr_unchanged_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &no_neighbor_attr_unchanged_cmd);
|
||||
|
||||
install_element (BGP_ENCAPV6_NODE, &neighbor_attr_unchanged_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &no_neighbor_attr_unchanged_cmd);
|
||||
|
||||
install_element (BGP_EVPN_NODE, &neighbor_attr_unchanged_cmd);
|
||||
install_element (BGP_EVPN_NODE, &no_neighbor_attr_unchanged_cmd);
|
||||
|
||||
@ -11296,10 +11275,6 @@ bgp_vty_init (void)
|
||||
install_element (BGP_VPNV4_NODE, &no_neighbor_nexthop_self_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &neighbor_nexthop_self_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &no_neighbor_nexthop_self_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &neighbor_nexthop_self_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &no_neighbor_nexthop_self_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &neighbor_nexthop_self_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &no_neighbor_nexthop_self_cmd);
|
||||
|
||||
/* "neighbor next-hop-self force" commands. */
|
||||
install_element (BGP_NODE, &neighbor_nexthop_self_force_hidden_cmd);
|
||||
@ -11414,10 +11389,6 @@ bgp_vty_init (void)
|
||||
install_element (BGP_VPNV6_NODE, &no_neighbor_remove_private_as_replace_as_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &neighbor_remove_private_as_all_replace_as_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &no_neighbor_remove_private_as_all_replace_as_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &neighbor_remove_private_as_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &no_neighbor_remove_private_as_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &neighbor_remove_private_as_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &no_neighbor_remove_private_as_cmd);
|
||||
|
||||
/* "neighbor send-community" commands.*/
|
||||
install_element (BGP_NODE, &neighbor_send_community_hidden_cmd);
|
||||
@ -11456,14 +11427,6 @@ bgp_vty_init (void)
|
||||
install_element (BGP_VPNV6_NODE, &neighbor_send_community_type_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &no_neighbor_send_community_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &no_neighbor_send_community_type_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &neighbor_send_community_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &neighbor_send_community_type_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &no_neighbor_send_community_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &no_neighbor_send_community_type_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &neighbor_send_community_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &neighbor_send_community_type_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &no_neighbor_send_community_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &no_neighbor_send_community_type_cmd);
|
||||
|
||||
/* "neighbor route-reflector" commands.*/
|
||||
install_element (BGP_NODE, &neighbor_route_reflector_client_hidden_cmd);
|
||||
@ -11484,10 +11447,6 @@ bgp_vty_init (void)
|
||||
install_element (BGP_VPNV4_NODE, &no_neighbor_route_reflector_client_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &neighbor_route_reflector_client_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &no_neighbor_route_reflector_client_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &neighbor_route_reflector_client_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &no_neighbor_route_reflector_client_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &neighbor_route_reflector_client_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &no_neighbor_route_reflector_client_cmd);
|
||||
|
||||
/* "neighbor route-server" commands.*/
|
||||
install_element (BGP_NODE, &neighbor_route_server_client_hidden_cmd);
|
||||
@ -11508,10 +11467,6 @@ bgp_vty_init (void)
|
||||
install_element (BGP_VPNV4_NODE, &no_neighbor_route_server_client_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &neighbor_route_server_client_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &no_neighbor_route_server_client_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &neighbor_route_server_client_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &no_neighbor_route_server_client_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &neighbor_route_server_client_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &no_neighbor_route_server_client_cmd);
|
||||
|
||||
/* "neighbor addpath-tx-all-paths" commands.*/
|
||||
install_element (BGP_NODE, &neighbor_addpath_tx_all_paths_hidden_cmd);
|
||||
@ -11656,10 +11611,6 @@ bgp_vty_init (void)
|
||||
install_element (BGP_VPNV4_NODE, &no_neighbor_weight_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &neighbor_weight_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &no_neighbor_weight_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &neighbor_weight_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &no_neighbor_weight_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &neighbor_weight_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &no_neighbor_weight_cmd);
|
||||
|
||||
/* "neighbor override-capability" commands. */
|
||||
install_element (BGP_NODE, &neighbor_override_capability_cmd);
|
||||
@ -11704,10 +11655,6 @@ bgp_vty_init (void)
|
||||
install_element (BGP_VPNV4_NODE, &no_neighbor_distribute_list_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &neighbor_distribute_list_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &no_neighbor_distribute_list_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &neighbor_distribute_list_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &no_neighbor_distribute_list_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &neighbor_distribute_list_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &no_neighbor_distribute_list_cmd);
|
||||
|
||||
/* "neighbor prefix-list" commands. */
|
||||
install_element (BGP_NODE, &neighbor_prefix_list_hidden_cmd);
|
||||
@ -11728,10 +11675,6 @@ bgp_vty_init (void)
|
||||
install_element (BGP_VPNV4_NODE, &no_neighbor_prefix_list_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &neighbor_prefix_list_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &no_neighbor_prefix_list_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &neighbor_prefix_list_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &no_neighbor_prefix_list_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &neighbor_prefix_list_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &no_neighbor_prefix_list_cmd);
|
||||
|
||||
/* "neighbor filter-list" commands. */
|
||||
install_element (BGP_NODE, &neighbor_filter_list_hidden_cmd);
|
||||
@ -11752,10 +11695,6 @@ bgp_vty_init (void)
|
||||
install_element (BGP_VPNV4_NODE, &no_neighbor_filter_list_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &neighbor_filter_list_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &no_neighbor_filter_list_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &neighbor_filter_list_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &no_neighbor_filter_list_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &neighbor_filter_list_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &no_neighbor_filter_list_cmd);
|
||||
|
||||
/* "neighbor route-map" commands. */
|
||||
install_element (BGP_NODE, &neighbor_route_map_hidden_cmd);
|
||||
@ -11776,10 +11715,6 @@ bgp_vty_init (void)
|
||||
install_element (BGP_VPNV4_NODE, &no_neighbor_route_map_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &neighbor_route_map_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &no_neighbor_route_map_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &neighbor_route_map_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &no_neighbor_route_map_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &neighbor_route_map_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &no_neighbor_route_map_cmd);
|
||||
|
||||
/* "neighbor unsuppress-map" commands. */
|
||||
install_element (BGP_NODE, &neighbor_unsuppress_map_hidden_cmd);
|
||||
@ -11800,10 +11735,6 @@ bgp_vty_init (void)
|
||||
install_element (BGP_VPNV4_NODE, &no_neighbor_unsuppress_map_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &neighbor_unsuppress_map_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &no_neighbor_unsuppress_map_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &neighbor_unsuppress_map_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &no_neighbor_unsuppress_map_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &neighbor_unsuppress_map_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &no_neighbor_unsuppress_map_cmd);
|
||||
|
||||
/* "neighbor maximum-prefix" commands. */
|
||||
install_element (BGP_NODE, &neighbor_maximum_prefix_hidden_cmd);
|
||||
@ -11870,22 +11801,6 @@ bgp_vty_init (void)
|
||||
install_element (BGP_VPNV6_NODE, &neighbor_maximum_prefix_threshold_restart_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &no_neighbor_maximum_prefix_cmd);
|
||||
|
||||
install_element (BGP_ENCAP_NODE, &neighbor_maximum_prefix_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &neighbor_maximum_prefix_threshold_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &neighbor_maximum_prefix_warning_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &neighbor_maximum_prefix_threshold_warning_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &neighbor_maximum_prefix_restart_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &neighbor_maximum_prefix_threshold_restart_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &no_neighbor_maximum_prefix_cmd);
|
||||
|
||||
install_element (BGP_ENCAPV6_NODE, &neighbor_maximum_prefix_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &neighbor_maximum_prefix_threshold_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &neighbor_maximum_prefix_warning_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &neighbor_maximum_prefix_threshold_warning_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &neighbor_maximum_prefix_restart_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &neighbor_maximum_prefix_threshold_restart_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &no_neighbor_maximum_prefix_cmd);
|
||||
|
||||
/* "neighbor allowas-in" */
|
||||
install_element (BGP_NODE, &neighbor_allowas_in_hidden_cmd);
|
||||
install_element (BGP_NODE, &no_neighbor_allowas_in_hidden_cmd);
|
||||
@ -11905,10 +11820,6 @@ bgp_vty_init (void)
|
||||
install_element (BGP_VPNV4_NODE, &no_neighbor_allowas_in_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &neighbor_allowas_in_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &no_neighbor_allowas_in_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &neighbor_allowas_in_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &no_neighbor_allowas_in_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &neighbor_allowas_in_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &no_neighbor_allowas_in_cmd);
|
||||
|
||||
/* address-family commands. */
|
||||
install_element (BGP_NODE, &address_family_ipv4_safi_cmd);
|
||||
@ -11918,9 +11829,6 @@ bgp_vty_init (void)
|
||||
install_element (BGP_NODE, &address_family_vpnv6_cmd);
|
||||
#endif /* KEEP_OLD_VPN_COMMANDS */
|
||||
|
||||
install_element (BGP_NODE, &address_family_encap_cmd);
|
||||
install_element (BGP_NODE, &address_family_encapv6_cmd);
|
||||
|
||||
install_element (BGP_NODE, &address_family_evpn_cmd);
|
||||
|
||||
/* "exit-address-family" command. */
|
||||
@ -11932,8 +11840,6 @@ bgp_vty_init (void)
|
||||
install_element (BGP_IPV6L_NODE, &exit_address_family_cmd);
|
||||
install_element (BGP_VPNV4_NODE, &exit_address_family_cmd);
|
||||
install_element (BGP_VPNV6_NODE, &exit_address_family_cmd);
|
||||
install_element (BGP_ENCAP_NODE, &exit_address_family_cmd);
|
||||
install_element (BGP_ENCAPV6_NODE, &exit_address_family_cmd);
|
||||
install_element (BGP_EVPN_NODE, &exit_address_family_cmd);
|
||||
|
||||
/* "clear ip bgp commands" */
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* BGP VTY interface.
|
||||
Copyright (C) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_VTY_H
|
||||
#define _QUAGGA_BGP_VTY_H
|
||||
@ -28,10 +28,8 @@ struct bgp;
|
||||
|
||||
#define BGP_AFI_CMD_STR "<ipv4|ipv6>"
|
||||
#define BGP_AFI_HELP_STR "Address Family\nAddress Family\n"
|
||||
#define BGP_SAFI_CMD_STR "<unicast|multicast|vpn|encap|labeled-unicast>"
|
||||
#define BGP_SAFI_CMD_STR "<unicast|multicast|vpn|labeled-unicast>"
|
||||
#define BGP_SAFI_HELP_STR \
|
||||
"Address Family modifier\n" \
|
||||
"Address Family modifier\n" \
|
||||
"Address Family modifier\n" \
|
||||
"Address Family modifier\n" \
|
||||
"Address Family modifier\n" \
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* zebra client
|
||||
Copyright (C) 1997, 98, 99 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
* Copyright (C) 1997, 98, 99 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
|
@ -1,22 +1,22 @@
|
||||
/* zebra connection and redistribute fucntions.
|
||||
Copyright (C) 1999 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, USA. */
|
||||
* Copyright (C) 1999 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_ZEBRA_H
|
||||
#define _QUAGGA_BGP_ZEBRA_H
|
||||
|
63
bgpd/bgpd.c
63
bgpd/bgpd.c
@ -1,22 +1,22 @@
|
||||
/* BGP-4, BGP-4+ daemon program
|
||||
Copyright (C) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <zebra.h>
|
||||
|
||||
@ -61,7 +61,6 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
#include "bgpd/bgp_nexthop.h"
|
||||
#include "bgpd/bgp_damp.h"
|
||||
#include "bgpd/bgp_mplsvpn.h"
|
||||
#include "bgpd/bgp_encap.h"
|
||||
#if ENABLE_BGP_VNC
|
||||
#include "bgpd/rfapi/bgp_rfapi_cfg.h"
|
||||
#include "bgpd/rfapi/rfapi_backend.h"
|
||||
@ -94,7 +93,6 @@ struct community_list_handler *bgp_clist;
|
||||
|
||||
unsigned int multipath_num = MULTIPATH_NUM;
|
||||
|
||||
static void bgp_if_init (struct bgp *bgp);
|
||||
static void bgp_if_finish (struct bgp *bgp);
|
||||
|
||||
extern struct zclient *zclient;
|
||||
@ -2701,7 +2699,7 @@ peer_group_bind (struct bgp *bgp, union sockunion *su, struct peer *peer,
|
||||
* Capability extended-nexthop is enabled for an interface neighbor by
|
||||
* default. So, fix that up here.
|
||||
*/
|
||||
if (peer->ifp && cap_enhe_preset)
|
||||
if (peer->conf_if && cap_enhe_preset)
|
||||
peer_flag_set (peer, PEER_FLAG_CAPABILITY_ENHE);
|
||||
|
||||
for (afi = AFI_IP; afi < AFI_MAX; afi++)
|
||||
@ -3115,10 +3113,7 @@ bgp_get (struct bgp **bgp_val, as_t *as, const char *name,
|
||||
|
||||
vrf = bgp_vrf_lookup_by_instance_type (bgp);
|
||||
if (vrf)
|
||||
{
|
||||
bgp_vrf_link (bgp, vrf);
|
||||
bgp_if_init (bgp);
|
||||
}
|
||||
bgp_vrf_link (bgp, vrf);
|
||||
}
|
||||
|
||||
/* Register with Zebra, if needed */
|
||||
@ -6354,7 +6349,7 @@ peer_clear_soft (struct peer *peer, afi_t afi, safi_t safi,
|
||||
char *
|
||||
peer_uptime (time_t uptime2, char *buf, size_t len, u_char use_json, json_object *json)
|
||||
{
|
||||
time_t uptime1;
|
||||
time_t uptime1, epoch_tbuf;
|
||||
struct tm *tm;
|
||||
|
||||
/* Check buffer length. */
|
||||
@ -6408,8 +6403,10 @@ peer_uptime (time_t uptime2, char *buf, size_t len, u_char use_json, json_object
|
||||
|
||||
if (use_json)
|
||||
{
|
||||
epoch_tbuf = time(NULL) - uptime1;
|
||||
json_object_string_add(json, "peerUptime", buf);
|
||||
json_object_long_add(json, "peerUptimeMsec", uptime1 * 1000);
|
||||
json_object_int_add(json, "peerUptimeEstablishedEpoch", epoch_tbuf);
|
||||
}
|
||||
|
||||
return buf;
|
||||
@ -7654,19 +7651,6 @@ bgp_master_init (struct thread_master *master)
|
||||
QOBJ_REG (bm, bgp_master);
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize interface list for instance, if needed. Invoked upon
|
||||
* instance create.
|
||||
*/
|
||||
static void
|
||||
bgp_if_init (struct bgp *bgp)
|
||||
{
|
||||
if (bgp->inst_type == BGP_INSTANCE_TYPE_VIEW)
|
||||
return;
|
||||
|
||||
vrf_iflist_create (bgp->vrf_id);
|
||||
}
|
||||
|
||||
/*
|
||||
* Free up connected routes and interfaces for a BGP instance. Invoked upon
|
||||
* instance delete (non-default only) or BGP exit.
|
||||
@ -7716,7 +7700,6 @@ bgp_init (void)
|
||||
bgp_route_map_init ();
|
||||
bgp_scan_vty_init();
|
||||
bgp_mplsvpn_init ();
|
||||
bgp_encap_init ();
|
||||
#if ENABLE_BGP_VNC
|
||||
rfapi_init ();
|
||||
#endif
|
||||
|
36
bgpd/bgpd.h
36
bgpd/bgpd.h
@ -1,22 +1,22 @@
|
||||
/* BGP message definition header.
|
||||
Copyright (C) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro
|
||||
|
||||
This file is part of GNU Zebra.
|
||||
|
||||
GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
under the terms of the GNU General Public License as published by the
|
||||
Free Software Foundation; either version 2, or (at your option) any
|
||||
later version.
|
||||
|
||||
GNU Zebra is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU Zebra; see the file COPYING. If not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
02111-1307, USA. */
|
||||
* Copyright (C) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro
|
||||
*
|
||||
* This file is part of GNU Zebra.
|
||||
*
|
||||
* GNU Zebra is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the
|
||||
* Free Software Foundation; either version 2, or (at your option) any
|
||||
* later version.
|
||||
*
|
||||
* GNU Zebra is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGPD_H
|
||||
#define _QUAGGA_BGPD_H
|
||||
|
@ -13,10 +13,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#include "lib/zebra.h"
|
||||
|
||||
@ -291,10 +290,9 @@ bgp_rfapi_is_vnc_configured (struct bgp *bgp)
|
||||
|
||||
DEFUN (vnc_advertise_un_method,
|
||||
vnc_advertise_un_method_cmd,
|
||||
"vnc advertise-un-method <encap-safi|encap-attr>",
|
||||
"vnc advertise-un-method encap-attr",
|
||||
VNC_CONFIG_STR
|
||||
"Method of advertising UN addresses\n"
|
||||
"Via Encapsulation SAFI\n"
|
||||
"Via Tunnel Encap attribute (in VPN SAFI)\n")
|
||||
{
|
||||
VTY_DECLVAR_CONTEXT(bgp, bgp);
|
||||
|
@ -13,10 +13,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_RFAPI_CFG_H
|
||||
|
@ -13,10 +13,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
@ -1198,6 +1197,7 @@ add_vnc_route (
|
||||
bgp, prd, table, p, new);
|
||||
}
|
||||
bgp_unlock_node (prn);
|
||||
encode_label (label_val, bn->local_label);
|
||||
}
|
||||
|
||||
bgp_unlock_node (bn);
|
||||
|
@ -13,10 +13,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_RFAPI_H
|
||||
|
@ -13,10 +13,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
|
@ -13,10 +13,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
#ifndef _QUAGGA_BGP_RFAPI_AP_H
|
||||
#define _QUAGGA_BGP_RFAPI_AP_H
|
||||
|
@ -13,10 +13,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_RFAPI_BACKEND_H
|
||||
|
@ -13,10 +13,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
@ -13,10 +13,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
@ -11,10 +11,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#include "lib/zebra.h"
|
||||
|
@ -11,10 +11,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_RFAPI_ENCAP_TLV_H
|
||||
|
@ -13,10 +13,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -13,10 +13,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -13,10 +13,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -13,10 +13,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef QUAGGA_HGP_RFAPI_MONITOR_H
|
||||
|
@ -13,10 +13,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
|
||||
|
@ -13,10 +13,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _QUAGGA_BGP_RFAPI_NVE_ADDR_H
|
||||
|
@ -13,10 +13,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -13,10 +13,9 @@
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; see the file COPYING; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
/*
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user