Age | Commit message (Collapse) | Author |
|
Subject: [zebra 18677] zebra initialisation bug and patch
Hi All,
I have found a bug in zebra that prevents its routing table and
interface database from being initialised properly. The problem occurs
when a request is made via the netlink socket but the kernel produces a
EWOULDBLOCK/EAGAIN when the result is trying to be retrieved via a
recvmsg(). Zebra does not do anything about this and continues to
function (with an empty routing table and interface list) as if nothing
has happened. With no such information the routing protocol dosn't work!
Two functions are called during the initialisation of Zebra:
interface_lookup_netlink() and netlink_route_read() - obtaining the
interfaces and routing table from the kernel respectively. These are the
only time these functions are called.
These functions, interface_lookup_netlink() and netlink_route_read(),
use netlink_parse_info() to recieve the data from the netlink socket.
The problem is, netlink_parse_info() returns (without error) when its
call to recvmsg() results in an errno EWOULDBLOCK/EAGAIN. This behaviour
is expected by other funtions calling netlink_parse_info() -
netlink_parse_info is simply recalled at a later stage. However, on
initialisation it is never recalled.
Since zebra is expected to nothing else during initialisation it was
easiest to temporarily change the netlink socket to BLOCK and wait
indefinently until the kernel responds with the required information.
Attached is a patch with these changes.
Comments and questions are welcome.
Please inform me if this patch is added to the Zebra source.
--israel
|
|
Subject: [zebra 18689] [PATCH] misc patch
Add missing param to zlog
|
|
Subject: [zebra 18689] [PATCH] misc patch
remove unused vars
|
|
(following from initial patches by Amir & Sergey Vyshnevetskiy ([zebra
18689])
|
|
Subject: [zebra 18767] possible SIGSEGV
Fix incorrect memset
|
|
To: zebra@zebra.org
Subject: [zebra 18648] [PATCH] Selforiginated Type-7 LSA's are not flushed
from lsdb
|
|
Date: 2003-04-10 14:32:31 +0200 (Thu, 10 Apr 2003)
New Revision: 212
Modified:
zebra-ag/trunk/ospfd/ospf_lsa.c
Log:
I've fixed a small opaque lsa bug which got triggered when deleting opaque
lsa of type 11. It used area->ospf->.. when area was null. This was replaced
by a ospf = ospf_lookyp(); ospf->...
|
|
Date: 2003-04-08 10:37:12 +0200 (Tue, 08 Apr 2003)
Log:
new ospfclient application with usage and more comments.
|
|
Log:
Removed unused variable in interface.c
|
|
Log:
I've fixed a small bug in connected_down_ipv4():
I changed
if (ifc_pointopoint (ifc))
into
if (ifc_pointopoint (ifc) && dest)
like show in connected_up_ipv4()
After changing this 'ip address x/y'; 'no ip address x/y' works without
crash
when done in sequence.
|
|
Add ospfclient to ospfclient/.cvsignore
|
|
|
|
Add dependency on rebuild target for vtysh_cmd.c to Makefile.am
|
|
|
|
add NSSA debug statement
|
|
|
|
|
|
|
|
|
|
|
|
moved definition of the various socket paths from the
per daemon header files into configure.ac. it will set the paths to
be in the directory specified by --localstatedir=<prefix> or
otherwise will try to guess as best it can ( a la pid file path
detection - which probably should try reference ${prefix} too).
the present hardcoded socket path, /tmp, isnt really correct. should
be in /var somewhere really.
|
|
Developers working with the repository should have the appropriate tools.
Out-of-sync files cause far too many problems with users as well as auto*
scripts not being half as portable across systems as they ought to be.
make-dist exists for a reason.
Todo: make the CVS snapshot script do make-dist, and use the resulting
tarball as the snapshot.
|
|
|
|
|
|
|
|
|
|
* Sync to Zebra CVS
* Fix lib/thread.h leak
* Fix small Opaque LSA leak
* Do not configure OSPF interfaces for secondary addresses
* vtysh fixes from Hasso
* Dave Watson's missing ntohs fix
|
|
Subject: [zebra 18573] PATCH ospfd: byte order error in assert statement
I found a bug in the ospfd code tickled this morning by a Type 1
LSA with exactly 62 entries (LSA length of 768, or 0x0300).
A missing ntohs in ospf_lsa.c:ospf_lsa_different() causes an assert
statement to fail, stopping ospfd.
> assert (l1->data->length > OSPF_LSA_HEADER_SIZE);
So, a length of type 768 turns into a length of 3 which is
obviously less than 20.
David
|
|
|
|
|
|
Fix from hasso tepper <hasso@linux.ee>
|
|
Preliminary fix to at least allow heartbeat to work with ospfd when
Heartbeat failover address has same prefixlength as main address.
|
|
I got it to compile. The problem was that major functions newly need a
struct ospf *ospf as the first argument. I tried to take the nearest
struct ospf *ospf around the function needing it, because i was not sure
if all those pointers to struct ospf * all point to the same (global)
struct ospf * which you also get when you call ospf_get().
I used area->ospf where I had the area, I used oi->ospf, where I had an
interface, I used lsa->oi->ospf where I had an lsa and i used ospf_get()
where I had nothing. I hope that's correct and works. We will see.
It compiles now without errors. Daemon is tested and works. The opaque lsa
part is not yet tested. I will do that as soon as srrd is ready.
|
|
|
|
|
|
|
|
|
|
* sync to latest zebra CVS
* spec file: updated and added define for ospf-api/client
NB: OSPF-API has been broken by the zebra.org changes, which
has added struct ospf * as a new arg to many functions
|
|
Fix up build for OSPF-API (dependent on opaque-lsa)
Add disable-ospfapi.
Fix up net-snmp detection.
|
|
|
|
Restore Amir's netsnmp build fix.
|
|
still perplexed why removing configure.in breaks certain autoconf sites.
|
|
|
|
|
|
--------------------------------
I've attached a small patch for zebra-pj, which adds the installation of
libospf.a libzebra.a, libospfapi.a and the needed headers for ospfapi
clients. the headers get installed to /usr/include/ospfd/* and
/usr/include/ospfapi.
|
|
|
|
No doubt builds will now break for everyone. (works here - autoconf 2.13)
|
|
|
|
|
|
use configure.in
|