| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
| |
| |
| |
| |
| | |
* zebra/zebra_rib.c: Fix possible dangling reference to rib
route_nodes - unlock it the appropriate number of times. (twice,
because of the implicit lock). see [quagga-dev 251].
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* lib/version.h: add ZEBRA_URL (unused for now)
* lib/vty.c: CMD_ERR_NOTHING_TODO when reading conf file should not
be fatal. slight reformating.
* ospfd/ospf_zebra.c: ignore reject/blackhole routes if zebra sends
these type of routes. probably should be a new type of route to
allow daemons to more easily choose whether to redistribute them
- rathen than just a flag (eg for reject/blackhole).
reorder the is_prefix_default test for ZEBRA_IPV4_ROUTE_DELETE to
avoid the inverted test - slightly more readable.
* redhat/zebra.spec.in: Add ospfapi port to services file, if
with_ospfapi.
* zebra/rib.h: Change nexthop types to an enum.
* zebra/rt_netlink.c: run it through indent -nut.
Add nexthop_types_desc[] descriptive array for nexthop types.
(netlink_route_multipath) debug statements indicate which branch
they are in and print out nexthop type.
* zebra/zebra_rib.c: slight reformatting.
* zebra/zebra_vty.c: Pass ZEBRA_FLAG_BLACKHOLE flag to
static_add_ipv4() if Null0 route is configured. print out Null0 if
STATIC_IPV4_BLACKHOLE route, and ignore flags (shouldnt be
possible to set flags from vty) for config and show route.
|
| |
| |
| |
| |
| |
| |
| | |
* zebra/rt_netlink.c: Debug statements added to
netlink_route_multipath()
* zebra/zebra_rib.c: If route has a gateway, delete only existing
route with that specified gateway.
|
| |
| |
| |
| |
| |
| |
| |
| | |
* lib/vty.{c,h}: Remove vty layer depending on a 'master' global,
pass the thread master in explicitly to vty_init. Sort out some
header dependency problems with lib/command.h
* zebra/: Move globals to struct zebrad. Update vty_init().
* (.*)/\1_main.c: update call to vty_init().
|
| |
| |
| |
| |
| | |
to always be considered to be a blackhole route. (if gate is passed in, it
cant be).
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Subject: [zebra 19084] Re: suspected memory leakage upon static route
I believe this is a more complete patch, it also addresses
allocating/freeing of nexthop->ifname string buffer (1) using
XSTRDUP/XFREE macros (thus correctly updating memory statistics), and
(2) for all nexthop->type cases that carry an ifname string.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Subject: [zebra 19080] suspected memory leakage upon static route deletion
upon deletion of a static route entry, at the end of
zebra/zebra_rib.c/static_delete_ipv4(), there's a call to XFREE to
deallocate the 'struct static_ipv4'. However, in the case of a static with
ifname as nexthop (type==STATIC_IPV4_IFNAME), this struct holds a pointer to
a dynamically allocated ifname string buffer (si->gate.ifname, see its
allocation within static_add_ipv4() using XSTRDUP). IMO, the attached patch
is required.
Notes: the same applies to IPv6 statics as well (fix included in patch);
and, I admit I haven't yet tested that, but it seems simple enough to be
working... ;->
|
| |
| |
| |
| |
| |
| | |
Subject: [zebra 17290] [PATCHES] - Fixes for problems in 0.93b
Added ifupstaticfix
|
| |
|
|
|
|
|
|
|
|
| |
Earlier changes to route management caused any route change to cause
the whole RIB to marked as changed. This then causes route flapping.
Fix by being more selective about what changes get flagged.
Bugfix 3488
|
|
|
|
| |
This makes code work like comments and probable original design.
|
|
|
|
|
|
|
|
| |
Earlier commit for Bug 3434 caused removed routes not to be marked
as SELECTED. This caused them not to be removed. Fix is to always
check both flags.
Bugfix 3479
|
|
|
|
|
| |
When multipath is being used, the state of one nexthop maybe down,
but another one may be up.
|
|
|
|
|
|
|
|
| |
This includes two fixes. First entries that are marked for removal
should not be used (clear SELECTED flag). Also, when recursive route
changes, the CHANGED flag needs to be set to force update.
Bugfix 3434
|
|
|
|
|
|
|
|
| |
If a link state change event causes a different nexthop, then
the RIB (and FIB) need to be updated. Solved by forcing the CHANGED
flag. This code could be rearranged to be cleaner in future.
Bugfix 3434
|
|
|
|
|
| |
Bugfix 3433, 3434
Need to rescan for recursive routes after any change to static route.
|
|
|
|
|
| |
This is the IPV6 analog to earlier changes to IPV4 static route
management.
|
|
|
|
|
|
|
| |
Need to handle all the different flavors of connected routes
in linkstate management
Bugfix: 2904, 3416
|
|
|
|
|
| |
The route_info table can be static const, and the vrf_table can be
static.
|
|
|
|
|
|
|
|
| |
To eliminate compiler warnings
* comment out unused code
* fix printf formats
* remove always true expression
* initialize variables
|
|
|
|
|
|
|
| |
For static routes, go through same logic to check the state of
the nexthop to see if the route should be activated or not.
Bug fix for 2708
|
|\ |
|
| |
| |
| |
| |
| |
| | |
Need to check if next hop is interface and if so then only mark
route active is interface is active. This addresses some of the problems
with static routes when interface goes down.
|
| |
| |
| |
| |
| |
| | |
Check if nexthop is active when doing RIB update.
This should fix issues with static routes staying active after
link going down.
|
| |
| |
| |
| |
| |
| | |
When link becomes unavailable, unselect any routes that use that link
as the next hop. This keeps routing protocols from propogating routes
these routes and greating black holes.
|
|\ \
| |/
|/|
| |
| |
| |
| | |
Conflicts:
ChangeLog
zebra/zebra_rib.c
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
2008-01-08 Michael Larson <mike@vyatta.com>
* zebra_rib.c: (nexthop_active_check) Replace if_is_up with
if_is_operative to solve problems with static interface
routes not behaving properly with link-detect.
|
|/
|
|
|
|
| |
cable pull (IFF_RUNNING) events and admin (IFF_UP) events.
On false for either event pulls routes from rib, and on true reinserts these back into kernel fib.
|
| |
|
|
|
|
| |
calls. Fixed.
|
|
|
|
| |
zebra/zebra_rib.c:nexthop_active_update())
|
| |
|
|
|
|
|
|
|
| |
2007-08-06 Denis Ovsienko
* zebra_rib.c: (general) Add extra debug logging for RIB and
RIB queue.
|
|
|
|
|
|
|
|
|
| |
2007-06-25 Denis Ovsienko
* zebra_rib.c: (rib_add_ipv4_multipath) Loop through RIB
is using 'same' variable, but RIB_ENTRY_REMOVED check
is testing the constant 'rib' variable, fix. Impact
unknown at this point.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2007-05-01 David L Stevens <dlstevens@us.ibm.com>
* (general) These changes collectively add route-map and
prefix-list support to zebra and fix a bug in "show
route-map" (with no argument).
* doc/main.texi: added route-map, prefix-list, ip protocol
and set src documentation
* lib/command.h: added PROTOCOL_NODE type
* lib/log.c: (proto_name2num) new function, protocol name to
number translation.
* lib/routemap.c: (vty_show_route_map) fixed "show route-map"
without route-map name
* lib/routemap.h: added RMAP_ZEBRA type
* lib/zebra.h: added proto_name2num() prototype
* vtysh/extract.pl.in: added VTYSH_ZEBRA flag for route-map and
plist
* vtysh/Makefile.am: added zebra_routemap.c
* vtysh/vtysh.h: added VTYSH_ZEBRA flag to VTYSH_RMAP
* zebra/connected.c: (connected_up_ipv4) added src preference argument
to rib_add_ipv4()
* zebra/kernel_socket.c: (rtm_read) ditto
* zebra/main.c: added prefix list initialization
* zebra/Makefile.am: added zebra_routemap.c source file
* zebra/rib.h: added generic address union "g_addr" and use in
existing places that had an explicit union.
Added "src" to struct nexthop.
Added preferred src arg to nexthop_ipv4_add and rib_add_ipv4.
* zebra/rt_netlink.c: (netlink_routing_table) set preferred source on
netlink messages.
(netlink_route_change) ditto
(netlink_route_multipath) ditto.
* zebra/rtread_getmsg.c: (handle_route_entry) added (NULL) src to
rib_add_ipv4() call.
* zebra/rtread_proc.c: (proc_route_read) ditto
* zebra/zebra_rib.c: (nexthop_ipv4_add) add src argument.
(nexthop_ipv4_ifindex_add) ditto
(rib_add_ipv4) ditto
(nexthop_active_check) Add route-map processing.
* zebra/zebra_routemap.c: new file for zebra route-map commands.
* zebra/zebra_vty.c: (ip_protocol_cmd) Apply route-map to protocol
(vty_show_ip_route_detail) added "src" printing
(vty_show_ip_route) ditto
(show_ip_protocol_cmd) new command, list routemaps.
(config_write_protocol) write out routemap protocl config.
(zebra_vty_init) Install the new routemap protocol commands.
* zebra/zserv.c: (zread_ipv4_add) added (NULL) src arg
(zebra_init) init zebra route-maps.
* zebra/zserv.h: add zebra_route_map_init
|
|
|
|
|
|
|
|
| |
2006-12-08 Piotr Chytla <pch@packetconsulting.pl>
* zebra_rib.c: (static_install_ipv{4,6}) Case where existing
RIB is updated must explicitely rib_addqueue the route_node,
to ensure the update actually takes effect.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2006-07-27 Paul Jakma <paul.jakma@sun.com>
* rib.h: (struct rib) Add a route_node rn_status flag field,
this has to be copied every time head RIB of a route_node
changes.
Remove the rib lock field, not needed - see below.
Add a status field for RIB-private flags.
* zebra_rib.c: Add a global for the workqueue hold time, useful
for testing.
(general) Fix for bug #268. Problem originally
detailed by Simon Bryden in [quagga-dev 4001].
Essentially, add/delete of a RIB must happen /before/ the
queue. Best-path selection (ie rib_process) and reaping of
freed RIBs can then be done after queueing. Only the route_node
is queued - no important RIB state (i.e. whether a RIB is to be
deleted) is queued.
(struct zebra_queue_node_t) Disappears, no longer need to
track multiple things on the queue, only the route_node.
(rib_{lock,unlock}) removed, RIBs no longer need to be
refcounted, no longer queued.
(rib_queue_qnode_del) Removed, deleted RIBs no longer deleted
via the queue.
(rib_queue_add_qnode) deleted
(rib_queue_add) Only the route_node is queued for best-path
selection, we can check whether it is already queued or
not and avoid queueing same node twice - struct rib * argument
is not needed.
(rib_link/unlink) (un)link RIB from route_node.
(rib_{add,del}node) Front-end to updates of a RIB.
(rib_process) Reap any deleted RIBs via rib_unlink.
Unset the route_node 'QUEUED' flag.
(General) Remove calls to rib_queue_add where add/del node was
called - not needed, update calls where not.
Ignore RIB_ENTRY_REMOVEd ribs in loops through route_nodes
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2006-07-27 Paul Jakma <paul.jakma@sun.com>
* {ioctl,kernel}_null.c: Dummy/Null kernel method implementations,
useful for testing zebra code that calls such methods.
* {redistribute,misc}_null.c: Dummy/Null methods, as above. But
for zclient, and for various misc functions.
* test_main.c: Test harness for zebra, currently just to test the
RIB.
* Makefile.am: Build testzebra using above.
* zebra_rib.c: Add a global for the workqueue hold time, useful
for testing.
|
|
|
|
|
|
|
|
|
|
| |
2006-07-27 Rumen Svobodnikov <rumen@telecoms.bg>
* connected.c: (connected_up_ipv4) interface connected routes always
go to table main (or otherwise they cannot be used by linux as
nexthops)
* zserv.c: (zread_ipv4_add) send route to the correct routing table
* zebra_rib.c (static_install_ipv4) set routing table
|
|
|
|
|
|
|
|
|
| |
2006-07-02 Paul Jakma <paul.jakma@sun.com>
* rt_netlink.c: (netlink_interface_addr) Fix CID #104, can not
proceed if addr is NULL.
* zebra_rib.c: (static_add_ipv6) Fix CID #18, double check
required arguments are supplied for the given nexthop type.
|
|
|
|
|
|
|
|
|
| |
2006-01-30 Paul Jakma <paul.jakma@sun.com>
* zebra_rib.c: (rib_process) Fourth time lucky on this jinxed
commit, last commit had a hole that could allow connected
route selection to escape beyond the connected route logic.
This time I cross-checked with Gunnar first. ;)
|
|
|
|
|
|
|
|
| |
2006-01-25 Gunnar Stigen <gunnar.stigen@axxessit.no>
* zebra_rib.c: (rib_process) Application of Gunnar's earlier
metric selection RIB change included incorrect tidy-ups made
by commiter. Fix. (NB: any errors here are again due to paul).
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2006-01-19 Paul Jakma <paul.jakma@sun.com>
* (general) various miscellaneous compiler warning fixes.
Remove redundant break statements from switch clauses
which return.
return from main, not exit, cause it annoys SOS.
Remove stray semi-colons which cause empty-statement
warnings.
* zebra/main.c: (sighup) remove private declaration of external
function.
|
|
|
|
| |
* zebra_rib.c: Take interface metric into account.
|
|
|
|
|
|
|
|
|
| |
* zebra_rib.c: (rib_process) convert to new workqueue specs and
shut up gcc, which complains about cast from void via
function parameters, for some dumb reason. Do the cast
inside the function instead.
(rib_queue_qnode_del) ditto.
(rib_queue_init) no need for the casts anymore.
|
|
|
|
|
| |
rib_delete_ipv6() to match routes in the RIB by their gateway as
well as by destination.
|