Age | Commit message (Collapse) | Author |
|
make the callers cope.
|
|
the error number as parameter instead of accessing errno, because in one
place the error number was not in errno but fetched from a socket.
now, of course it makes much more sense to just set errno to the error number
just fecthed in this one place instead of having hundreds of fatal() calls
all transfer the errno round and round and round...
fix this, and also provide a fatalx, which does not care for errno and doesn't
invoke strerror.
oh, btw, in the place where we fetch the err # from the socket, we don't
call fatal anymore anyway...
|
|
of void they can now report errors upstream and do not need to panic any
more. so do that and handle the errors in bgpd.c in the vein that we at least
can clean up before exit.
there are no direct fatal() call in kroute.c now any more, nor any in bgpd.c
after forking.
|
|
try to handle as much as possbile in a graceful way so taht we don't leave
the kernel routing table full of our routes, for example.
|
|
|
|
|
|
|
|
|
|
kroute_validate_nexthop -> kroute_nexthop_insert
|
|
handle IMSG_NEXTHOP_ADD and send IMSG_NEXTHOP_UPDATE when appropriate
|
|
ok claudio@
|
|
|
|
|
|
|
|
somewhat fragile IMSG_SHUTDOWN_* stuff any more. speeds shutdown up
enourmously.
ok claudio@
|
|
them easily on shutdown without the RDE's help
|
|
|
|
and make all callers cope.
|
|
|
|
them when shutting down.
the rde needs the main process to clean up the routing table on exit so the
parent process needs to be in service until the RDE is done.
ok claudio@
|
|
pointed out by theo
|
|
o define new imsg types for this
o process these imsgs in the parent process
now "only" debugging and the rde sending these messages is missing.
ok claudio@
|
|
|
|
|
|
|
|
|
|
plain exit() is enough. we have not yet forked and an error message is already
printed by the parser.
inspired by a theo request
|
|
|
|
finally gives us read buffers per pipe instead of per process, eleminating
a possible race.
also gets us a real imsg_init() that does all the boring init work
|
|
introduce msgbuf API and bundle all info needed for the write buffers in a
struct msgbuf.
also switch to a write queue per handled connection (each bgp session, each
pipe) instead of one big one.
fixes some subtle problems and is overall nicer.
ok claudio@
|
|
suggested by tedu@ for a performance gain, ok claudio@
|
|
|
|
|
|
|
|
|
|
condition happened. fatal()s from subsystems used by all 3 processes like
the imsg subsystem were hard to track down without knowing in which process
the condition happened.
|
|
|
|
data with RIB missing
use same message in RDE and SE for consistency
|
|
started by me some time ago with moral support from theo, the proceeded up to
the point where the session engine worked correctly. claudio jeker joined
then and did a lot of work in the RDE.
it is not particulary usefull as application right now as parts are still
missing but is imported to enable more people to work on it.
status:
BGP sessions get established fine, OPEN messages and then KEEPALIVEs
exchanged etc. session FSM works fine; NOTIFICATIONs are handled fine, and
all connection drops etc I provoked get handled fine.
Incoming UPDATE messgages are parsed well and the data entered to the RIB,
the decision process is not yet there, neither is outgoing UPDATEs or sync
to the kernel routing table.
not connected to the builds yet.
|