| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | |
| | |
| | |
| | |
| | | |
rtadv_prefix.prefix was casted to "struct prefix_ipv6" and had the same
size, make it exactly this type to make the code a bit cleaner.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
RFC4861 4.6.2. Prefix Information
Prefix An IP address or a prefix of an IP address. The
Prefix Length field contains the number of valid
leading bits in the prefix. The bits in the prefix
after the prefix length are reserved and MUST be
initialized to zero by the sender and ignored by
the receiver.
* rtadv.c
* ipv6_nd_prefix(): add missing call to apply_mask_ipv6()
* no_ipv6_nd_prefix(): idem
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
There was a regression introduced with the previous commit:
"ipv6 nd home-agent-lifetime 1800000" appeared by default in every
interface section of running-config, although this command is
invalid in this context. Troubleshooting and bugfixing of the issue
tracked out several bugs in router advertisement procedures, some of
which are fixed in this commit.
* zebra/interface.c
* if_zebra_new_hook(): update to treat -1 as "uninitialized"
* nd_dump_vty(): idem
* zebra/rtadv.c
* rtadv_send_packet(): update processing of "router lifetime" field,
"home agent" option and "home agent lifetime" field to conform to
RFC6275 better
* ipv6_nd_ra_interval_msec(): update MaxRtrAdvInterval range check,
make sure it never exceeds (initialized) AdvDefaultLifetime
* ipv6_nd_ra_interval(): idem
* ipv6_nd_ra_lifetime(): update AdvDefaultLifetime range check, make
sure it never falls below MaxRtrAdvInterval
* ipv6_nd_homeagent_lifetime(): update HomeAgentLifetime range check
* no_ipv6_nd_ra_lifetime(): update to treat -1 as "uninitialized"
* no_ipv6_nd_homeagent_lifetime(): idem
* rtadv_config_write(): idem
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The following options could be configured for an interface, but were
never visible in the config text:
ipv6 nd adv-interval-option
ipv6 nd home-agent-preference
ipv6 nd home-agent-lifetime
ipv6 nd home-agent-config-flag
|
| | |
| | |
| | |
| | |
| | |
| | | |
The previous commits modified both zebra and bgpd for additional
SAFI field, but not any other routing daemon, which led to zebra
daemon crashing with failed assertion.
|
| | | |
|
| | |
| | |
| | |
| | | |
warning: too many arguments for format [-Wformat-extra-args]
|
| | |
| | |
| | |
| | |
| | | |
The patch adds the ipv6 network command in the BGP multicast address
family mode.
|
| | |
| | |
| | |
| | |
| | |
| | | |
This patch contains the following:
1. Addition of IPv6 SAFI_MULTICAST BGP routes into the RTM's RIB.
2. Deletion of IPv6 SAFI_MULTICAST BGP routes from the RTM's RIB.
|
| | |
| | |
| | |
| | |
| | |
| | | |
This patch contains the following:
1. Addition of IPv6 SAFI_MULTICAST BGP routes into the BGP Multicast RIB.
2. Deletion of IPv6 SAFI_MULTICAST BGP routes from the BGP Multicast RIB.
|
| | |
| | |
| | |
| | |
| | |
| | | |
This patch contains the following:
1. Addition of IPv4 SAFI_MULTICAST BGP routes into the RTM's RIB.
2. Deletion of IPv4 SAFI_MULTICAST BGP routes from the RTM's RIB.
|
| | |
| | |
| | |
| | |
| | |
| | | |
This patch contains the following:
1. Addition of IPv4 SAFI_MULTICAST BGP routes into the BGP Multicast RIB.
2. Deletion of IPv4 SAFI_MULTICAST BGP routes from the BGP Multicast RIB.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This implements a new "ipv6 nd mtu <1-65535>" interface-level command.
* doc/ipv6.texi: add description
* zebra/rtadv.c
* rtadv_send_packet(): send option type 5, when configured
* ipv6_nd_mtu(): new VTY helper
* no_ipv6_nd_mtu(): ditto
* rtadv_config_write(): add new option
* rtadv_init(): list new helpers
|
| | |
| | |
| | |
| | |
| | |
| | | |
* bgp_nexthop.c: The nexthop lookup cache has to return success for queried
nexthops if bgpd isn't connected to zebra, or else BGP without zebra doesn't
work.
|
| |\ \
| | | |
| | | |
| | | |
| | | |
| | | | |
This marker merge (i.e. an 'ours' strategy merge) is a placeholder to show
that all commits in Quagga-RE stable, to its release RE-0.99.17.6 tag, have
been reviewed and merged into 'master'.
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
When the same ip address is used on several interfaces,
and one of them gets deleted (or equivalent: set to down and
then address removed), rib_delete_ipv[46] will also remove
the connected route from other interfaces.
rib_delete_ipv[46] is called twice when an interface is
deleted:
- for the "ifdown" event
- for the address removal
(note: this may be specific to the netlink interface of linux)
The second call does not find the connected route to that same
ifindex anymore, but deletes similar connected routes to any
other ifindex instead.
Reason: the ifindex check is on the same level as the check
for ZEBRA_ROUTE_CONNECT/NEXTHOP_TYPE_IFINDEX. If everything
matches except for the ifindex, the "else" part (intended for
different route types) is executed, thus removing the route
from the wrong interface.
fix: move ifindex check inside the "then" part of the check
for ZEBRA_ROUTE_CONNECT/NEXTHOP_TYPE_IFINDEX. Now connected
routes to other ifindexes will not spill over to the "else"
part for different route types anymore.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
* fix disagreement with C99 in zlog_debug calls
Format specifier in some zlog_debug calls for size_t values
was changed in order to C99 ('%u' -> '%zu').
* fix -Wsign-compare warnings
Type of return value of ospf6_packet_max() was changed.
|
| | | |
| | | |
| | | |
| | | | |
...otherwise 4294967295 is not a valid value on 32bit systems
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
* ospf6_route.c: (ospf6_route_best_next) Allows unlock route, even
when there's no next route. This is consistent with how
ospf6_route_next() behaves.
* ospf6_intra.c: (ospf6_intra_prefix_lsa_remove) Make sure the last
route considered is always unlocked. This is needed when the for
loop terminates because ospf6_route_is_prefix() returns zero.
Signed-off-by: Vyacheslav Trushkin <me@dogonthesun.net>
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
A clean exit makes it easier to use memory debuggers.
* ospf6_asbr.c: (ospf6_asbr_terminate) Add a function to do route map
cleanup.
* ospf6_lsa.c: (ospf6_lsa_terminate) Add a function to cleanup the lsa
handler vector.
* ospf6_main.c: (ospf6_exit) Add an function that causes ospf6d to
gracefully exit.
* ospf6_message.c: (ospf6_message_terminate) Add a function that frees
the send and receive buffers.
* ospf6_top.c: (ospf6_delete) Enable the ospf6_delete() function.
Disable ospf6 before freeing everything.
Signed-off-by: Vyacheslav Trushkin <me@dogonthesun.net>
Conflicts:
ospf6d/ospf6_lsa.h
|
| | | |
| | | |
| | | |
| | | |
| | | | |
if.c: (if_terminate) This adds a cleanup function that can be called
when a daemon exits, similar to vty_terminate().
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
* ospf_abr.c
* ospf_abr_nssa_am_elected(): feed "best" instead of "address of best"
into IPV4_ADDR_CMP(), because "best" is a pointer; also, mean s_addr
field of the structures to get better typed pointers
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
IPV4_ADDR_SAME() wasn't passed the right union member, this could cause
a bug due to strict-aliasing. IPV6_ADDR_SAME() case got its fix before
the error could be created by macro upgrade.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
* lib/prefix.h
* IPV4_CLASS_DE(): make consistent with counterpart macros
* bgp_packet.c
* bgp_open_receive(): test using macro instead of ">="
* bgp_route.c
* bgp_update_rsclient(): idem
* bgp_update_main(): idem
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
* ospf_packet.c (ospf_recv_packet): FreeBSD, starting from version 10, will not
subtract the IP header size from ip_len.
This is the patch from FreeBSD's ports/net/quagga/files/patch-ospfd__ospf_packet.c,
by Boris Kovalenko.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
ZEBRA_HELLO message is used by routing daemons to inform zebra
what type of routes daemon will be announcing to zebra. Also
zebra uses route_type_oaths array to track which daemon announces
which protocol. Zebra mops up routes if daemon didn't for some
reason.
|
| | | |
| | | |
| | | |
| | | | |
The if_dump code had empty loop, that caused set-never-used warning.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Stephen Hemminger's commits contain all the changes and
several other warning fixes.
This reverts commit 6947dbebdc91b6272f8107a6e0dd211457438606.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Make progname a string, and cast when calling asn1.
Remove variable set but never used.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Check result of fgets(), and don't set variable that is
never used.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
When doing valgrind testing, the privledges from zprivs_init() need
to be cleaned up on exit.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
The code for nssa_range and other bits that were written but
never used.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
BGP was ignoring nexthop info for static and other redistributed
routes for IPv6. Build extra attribute info to store the nexthop.
See also:
https://bugzilla.vyatta.com/show_bug.cgi?id=6073
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The old algorithim looked up every node twice as it withdrew
the entry. It looks up entry once in redistribute_withdraw, then
looks it up again info_delete. Use result of first lookup
to do the free directly.
This may explain the slow performance observed in
https://bugzilla.vyatta.com/show_bug.cgi?id=4421
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Change sockunion_log() to not use strdup(). This fixes a small memory
leak that occurs on every failed connect(), and is simpler/cleaner.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The delete_hook was being run after calling access list delete function.
This would cause ospf to dereference a NULL, in ospf_filter_update
because 'access->name' was already freed.
See also:
https://bugzilla.vyatta.com/show_bug.cgi?id=7654
|
| | | |
| | | |
| | | |
| | | |
| | | | |
ip_masklen() was likely to return incorrect results after being compiled
with -fstrict-aliasing (-O2, -O3, -Os)
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The new implementation makes use of a 64KB mapping table, which makes it
possible to compute masklen faster and with constant execution time. The
map also allows for additional version of the function, which can detect
errors in input argument.
The previous implementation had a variable cost of execution, which
depended on masklen in a non-linear manner, and at its worst (/31) was
4 times slower, than the new implementation. The only case of old
function just slightly outperforming the new one is /0, which is of
little practical interest.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Experience with IPv4 counterpart of this function suggests, that
this way of type-punning is likely to cause errors.
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | | |
lib/zclient.c: using of HAVE_TCP_ZEBRA in zclient_socket_*
definitions extended by else clause.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
All daemons modified to support custom path to zserv
socket.
lib: generalize a zclient connection
zclient_socket_connect added. zclient_socket and
zclient_socket_un were hidden under static expression.
"zclient_serv_path_set" modified.
|
| | | | |
|