zebra/if_ioctl_solaris: Make foo staticmake interface_ioctl_ioctl() and if_get_index() static
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
zebra/ioctl_solaris: Fix use of prefix2str in if_prefix_add/delete_ipv6First argument of prefix2str pointed to ifc->address->prefix, but
no prefix exists in address. Should have been ifc->address.
Signed-off-by: Martin Winter <mwinter@opensourcerouting.org>
build: make libraries self-reliantlibospf and libospfclient both need libzebra, so they should link
against it. The days of libtool propagating upwards such dependencies
are nearing their end...
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
pimd: use IPPROTO_IP (not SOL_IP) for IP_PKTINFOSolaris uses the same socket API for IP_PKTINFO as Linux, but doesn't
have a SOL_IP define.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
build/solaris: drop duplicate __EXTENSION__ define__EXTENSION__ is already defined in config.h by autoconf; drop the
duplicate from zebra.h.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
*: make sure zebra.h is always included firstzebra.h pulls in config.h, which results in fiddling with things like
__FILE_OFFSET_BITS. It must always be included first, in order to set
flags that influence the compiler via <features.h>.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
build: Remove the old PIC/PIE patch, let libtool sort it out* Remove the old change from '08 to add in PIE arguments at automake level.
Versions of libtool since then know how to deal with -fpie and do the right
thing according to whether its building shared or executable objects.
So just pass '-fpie' as CFLAG and let libtool do its thing.
isisd: Attached-bit in LSP headerSet/reset attached-bit in LSP header:
This patch provides support for set/reset attached_bit in the LSP header.
In IS-IS networks, routing inter-area traffic from L1 areas is
accomplished by sending the traffic to the nearest L1/L2 router.
A L1/L2 router identifies itself by setting an attach-bit (ATT-bit) in its (LSP).
The ATT-bit in LSP can be changed using the set-attach...
isisd: Add new adjacency to LSP neighbor listisis_pdu.c :
New adjacency did not always get added to LSP neighbor list.
The adjacencies that were created once minimum time allowed before LSP
retransmission had surpassed, instantly got their LSP regenerated, but
the adjacency circuit type was not set to IIH PDU circuit type before
the LSP was regenerated , hence didn't pass the check for adjacency
circuit type in lsp_build(), and the adjac...
pimd: Create ability to modify hell and hold timers per interfaceCreate new per interface command:
'ip pim hello <1-180> {<1-180>}'
The first number is the Hello Timer for this interface
The second number is the Hold Timer to pass to neighbors on this interface.
The second number is optional.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd: Change ioctl call failure from vty_out to zlog_warnThe command 'show ip multicast' when run, iterates over all interfaces
on the router, if you do not have pim configured on that interface
it would generate an error message:
Interface Address ifi Vif PktsIn PktsOut BytesIn BytesOut
br1 20.0.15.1 7 7 0 0 0 0
swp1 169.254.0.10 3 3 0 0 0 0
swp2 ...
pimd: Ensure new generation_id is different from previousThe RFC states that an interfaces generation_id must be changed
if it experiences an if down. From 4.3.1:
The GenID option contains a randomly generated
32-bit value that is regenerated each time PIM forwarding is started
or restarted on the interface, including when the router itself
restarts.
Since we are only grabbing a new generation_id without comparing
it to the previous generation_id,...
pimd: Stop DR election on every helloThe DR election is occurring on every hello received.
This is because the hello receive packet returns a 0
for any successfully received packet. PIMD then looked
at the 0 returned and did a DR election.
Code was inspected for the cases where DR should happen:
(A) Interface ip address change
(B) DR priority in hello packet changes
(C) Received a new neighbor on an interface
(D) Neighbor timer ...
pimd: Fix first DR ElectionThe function pim_neighbor_new caused the dr election before
the addition of the neighbor to the pim_ifp->pim_neighbor_list,
in pim_neighbor_add, which is needed to properly elect the
correct DR.
Move the dr_election and hello trigger till after the addition
to the list.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pimd: Add ability to set DR Priority for an interfaceFrom RFC 4601, Section 4.3.1:
The DR_Priority Option allows a network administrator to give
preference to a particular router in the DR election process by
giving it a numerically larger DR Priority. The DR_Priority Option
SHOULD be included in every Hello message, even if no DR Priority is
explicitly configured on that interface. This is necessary because
priority-based DR election is only ...
pimd: add support for configuring multicast static routesHi,
This patch adds the ability to configure multicast static routes
directly into pimd. Two source files are introduced to implement the new
feature in addition to changes to existing files.
Here is how it can be used the CLI:
interface <incoming interface>
ip mroute <outgoing interface> <group addr> #
for asm
or ip mroute <outgoing interface> <group addr> <source> ...
Removal of 'show ip mroute'The 'show ip mroute' in zebra_vty.c collided with the
'show ip mroute' command in pim_cmd.c. The 'show ip rpf'
command is functionally equivalent to the zebra_vty.c
'show ip mroute'. Therefore remove the 'show ip mroute' command
in zebra_vty.c.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
pim: 'show debugging' collisionThe 'show debugging' cli as setup by pim collided with 'show debugging isis'.
Fix that and clean up cli help commands to actually display correctly.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
ospfd: Self nbrs needs to be rebuilt when router ID changes.Some self nbrs are identified by router_id, these needs
to be rebuilt instead of just resetting router ID.
Possibly one could optimize for !(virtual | ptop) links
by doing oi->nbr_self->router_id = router_id instead.
Router ID will change once after startup config has been
read and zebra reports router ID, unless router ID has
been configured in ospf.
pimd assert when no route to source from a new igmp joinWhen pim_upstream_new is called the code looks up the nexthop.
If there is no route to the source, the code silently ignored
the error returned. When the nexthop lookup fails don't create
the 'struct pim_stream *' to return.
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
Add code to extract.pl.in to prevent further cli function overwritesCurrently extract.pl.in is used to build the vtysh cli. When two
different cli's collide with the same command name, the original
cli is never called, because it is dropped. This code notes the
silent drop and tracks the number of drops. If they change then
the code will fail the build. The current number of drops was
figured out by running extract.pl and counting up the drops
then adding c...
pim_mroute.h has a different version of code than linux/mroute.h provideslinux/mroutes.h and pim_mroute.h both have copies of the same structures.
This is causing failures in setsockopt(..., MRT_ADD_MFC,...) because
of data structure incompatibilities between the kernel and what
pim_mroute.h was providing. Modify the code to check for mroute.h
and include it if necessary. I did not modify the non linux/mroute.h
path because I do not have other systems to test on e...
Quagga: Fix code to use srandom/randomQuagga was using a mix of srand/rand and srandom/random.
Consolidate to use srandom/random which are the POSIX
versions of random number generators
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
PIMD: Fix code to use srandom/randompimd rolled it's own solution to random #'s, that was not
terribly random. Rely on the underlying system to generate
random #'s for us
Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
lib, stream: fix stream sanity checksBecause operator "!" has higher priority than "&&",
So we put the "&&" expression in "()" to check both getp and endp.
Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
bgpd: peer_uptime overflows after 1 year* bgpd.c: (peer_uptime) Wraps after 1 year, and doesn't indicate years.
Fix. Assume a year is 365 days, for an easy life.
Fixes: Bug #836
Reported-by: Rolf Hanßen
Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
lib, vtysh: support multiple VRFs by using linux netnsWe realize VRFs with linux netns by default. The main job is
to associate a VRF with a netns. Currently this is done by
the configuration:
[no] vrf N netns <netns-name>
This command is also available in vtysh and goes to only
zebra, because presently only zebra supports multiple VRF.
A file descriptor is added to "struct vrf". This is for the
associated netns file. Once the command "vrf N ...