Because the prefix structure may include or not evpn sub structure, then
HAVE_EVPN compilation define is also used in prefix.c, because it
references the sub field evpn of prefix structure.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
This commit is also taking into account changes related to srcdes
feature introduction in zebra folder.
Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
Ticket: CM-12262
Reviewed By: CCR-5065
Testing Done: Manual
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
'packed' keyword had no effect on packing the afi_ethernet structure.
The attribute keyword has been eppended in order to take into account
the packed feature.
Signed-off-by: Julien Courtat <julien.courtat@6wind.com>
The requirement from draft-ietf-bess-evpn-prefix-advertisement-03
mentions that the Eth-Tag ID, IP Prefix Length and IP Prefix will be
part of the route key used by BGP. The ip prefix length is then appended
to the evpn_addr. In addition to this, the ethernet tag ID is reused.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
Extend the prefix data structure to allow for basic support for EVPN type-3
and type-2 routes.
Note: This may be revised in future.
Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
Ticket: CM-11937
Reviewed By: CCR-5001
Testing Done: None
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
To support EVPN, a new AFI and SAFI value are defined here.
For internal processing, two other values are used. Those values will
be used to reach RIB entries by using internal afi and safi values
as indexes. This commit is using naming convention for using EVPN.
External value exchanged in BGP packets is called of with
IANA_ presence in macro, while internal value will not have _IANA_
presence.
Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
Merge the parsed graph into the existing one as a separate step. This
makes it possible to merge identical subgraphs, which is used e.g. in
bgpd for <A.B.C.D|X:X::X:X|WORD> neighbor names.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Like config_write(), this should use rename(), even though atomicity is
not a real issue here.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
sync() has a HUGE impact on systems that perform actual I/O, i.e. real
servers...
Also, we were leaking a fd on each config write ever since
c5e69a0 "lib/vty: add separate output fd support to VTYs"
(by myself :( ...)
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
sync() has a HUGE impact on systems that perform actual I/O, i.e. real
servers...
Also, we were leaking a fd on each config write ever since
c5e69a0 "lib/vty: add separate output fd support to VTYs"
(by myself :( ...)
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
The library libzebra that is installed with FRR will
conflict with Quagga. So let's rename it to libfrr.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
The code was making the correct assumption
that the v4 and v6 addresses start in the
same spot in memory and since we were looking
at a v6 prefix it would just work. This
causes distress in SA systems, so let's just
make it happy.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
It is possible if the hostname is > 32
characters that we would just overrun the
client_name data structure. Truncate
the hostname string to 31 characters (to allow for NULL)
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
was_stdio was never set up with a 'correct'
initial value, leading to cases where
we would choose what to do based upon
what was in the stack.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
In the case where we are using select as
the operator *and* we call
funcname_thread_add_read_write *and* the
fd is already set, we would overwrite
the read/write direction to always be READ.
Clearly this was a bad idea.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
The cli could be reduced for v4 and v6 code
paths into 1 function. Additionally the v6
code path had a SA issue found where it
"theoratically" could have caused a null
de-reference. This issue has been removed
as well.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
We were checking for non-null of 'struct stream *s'
after we did a stream_getl, which would have crashed
the program.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This patch introduces several new configuration commands to ldpd. These
commands should allow the operator to define advanced filtering policies
for things like label advertisement, label allocation, etc.
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
prefix_list_delete wasn't releasing chained trie entries, only the main
one. Just call the proper trie_del.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
Since the at_close call for the stdio vty might exit() the process, move
it to the end of the function, after freeing all memory.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
To make it possible for testcli to get a clean memory management bill.
(Note: XFREE() is NULL-safe, just like free().)
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>