summaryrefslogtreecommitdiffstats
path: root/nest/iface.h
AgeCommit message (Collapse)Author
2010-02-27Better flushing of interfaces.Ondrej Zajicek
When device protocol goes down, interfaces should be flushed asynchronously (in the same way like routes from protocols are flushed), when protocol goes to DOWN/HUNGRY. This fixes the problem with static routes staying in kernel routing table after BIRD shutdown.
2010-02-26Many changes in (mainly) kernel syncers.Ondrej Zajicek
- BSD kernel syncer is now self-conscious and can learn alien routes - important bugfix in BSD kernel syncer (crash after protocol restart) - many minor changes and bugfixes in kernel syncers and neighbor cache - direct protocol does not generate host and link local routes - min_scope check is removed, all routes have SCOPE_UNIVERSE by default - also fixes some remaining compiler warnings
2009-09-08Temporary OSPFv3 development commit.Ondrej Zajicek
Finally, it is working.
2009-05-29Implements primary address selection base on 'primary' option.Ondrej Zajicek
2009-05-06A change in OSPF and RIP interface patterns.Ondrej Zajicek
Allows to add more interface patterns to one common 'options' section like: interface "eth3", "eth4" { options common to eth3 and eth4 }; Also removes undocumented and unnecessary ability to specify more interface patterns with different 'options' sections: interface "eth3" { options ... }, "eth4" { options ... };
2000-06-01Removed comments about workings of the old neighbor cache which areMartin Mares
(1) obsolete and (2) replaced by the progdoc.
2000-06-01Modified the neighbor cache to remember local addresses as well.Martin Mares
neighbor->scope now contains proper address scope which is zero (SCOPE_HOST) for local addresses, higher (SCOPE_LINK, ..., SCOPE_UNIVERSE) for remote ones.
2000-03-27if_connected() is again private.Martin Mares
Introduced neigh_connected_to() to serve the same purpose efficiently.
2000-03-26I broke compilation. Sorry.Pavel Machek
2000-03-26if_connected is usefull outside of neighbour cache.Pavel Machek
2000-03-01Reimplemented neighbor cache. Now uses real hashing.Martin Mares
2000-03-01Rewrote interface type detection logic. The `unnumbered' flag is now perMartin Mares
address, not per interface (hence it's ifa->flags & IA_UNNUMBERED) and should be set reliably. IF_MULTIACCESS should be fixed now, but it isn't wise to rely on it on interfaces configured with /30 prefix.
2000-01-19Killed a couple of bugs in the neighbor cache.Martin Mares
Manual disable/enable/restart/shutdown/reconfiguration of protocols no longer hangs on loops in neighbor lists :)
1999-12-16Minor cleanups.Martin Mares
1999-12-01Introduced new protocol-dependent integer field `aux' to struct neighbor.Martin Mares
1999-11-25Added few basic commands: show status, show interfaces [summary],Martin Mares
show protocols (incomplete).
1999-08-03Cleaned up handling of interface patterns:Martin Mares
o Parsing of interface patterns moved to generic code, introduced this_ipatt which works similarly to this_iface. o Interface patterns now support selection by both interface names and primary IP addresses. o Proto `direct' updated. o RIP updated as well, it also seems the memory corruption bug there is gone.
1999-05-06I rewrote the interface handling code, so that it supports multipleMartin Mares
addresses per interface (needed for example for IPv6 support). Visible changes: o struct iface now contains a list of all interface addresses (represented by struct ifa), iface->addr points to the primary address (if any). o Interface has IF_UP set iff it's up and it has a primary address. o IF_UP is now independent on IF_IGNORED (i.e., you need to test IF_IGNORED in the protocols; I've added this, but please check). o The if_notify_change hook has been simplified (only one interface pointer etc.). o Introduced a ifa_notify_change hook. (For now, only the Direct protocol does use it -- it's wise to just listen to device routes in all other protocols.) o Removed IF_CHANGE_FLAGS notifier flag (it was meaningless anyway). o Updated all the code except netlink (I'll look at it tomorrow) to match the new semantics (please look at your code to ensure I did it right). Things to fix: o Netlink. o Make krt-iface interpret "eth0:1"-type aliases as secondary addresses.
1999-03-02o The if_change_too_big_p change was too high-spirited. Fixed.Martin Mares
o Introduced if_find_by_index() o Recognizing two types of interface updates: full update (starting with if_start_update(), ending with if_end_update(), guaranteed to see all existing interfaces) and a partial update (only if_update(), usually due to asynchronous interface notifications).
1999-03-02Interface logic changes:Martin Mares
o Introduced IF_LINK_UP flag corresponding to real link state. o Allowed addressless interfaces. o IF_UP is now automatically calculated and set iff the interface is administratively up, has link up and has an IP address assigned. It may be IF_IGNORED, though (as in case of the loopback). o Any changes which include up/down transition are considered small enough to not provoke artificial upping and downing of the interface. o When an interface disappears (i.e., it wasn't seen in the last scan), we announce this change only once. o IF_LOOPBACK implies IF_IGNORE.
1999-02-13When protocols go down, prune the neighbor list.Martin Mares
1999-02-13config->router_id works again.Martin Mares
1999-02-05Implemented new configuration/reconfiguration interface and defined protocolMartin Mares
state machines. Full explanation will follow soon.
1999-01-12Keep protocol data out of iface_patt.Pavel Machek
1998-12-04Rip now has configurable per-interface metric (please rewiev), and fewPavel Machek
more configurable parameters. To do that, union was added into iface_patt.
1998-11-29Added functions for manipulating interface name pattern lists:Martin Mares
o iface_patt_match(list, iface) -- match interface against list o iface_patts_equal(a, b, c) -- compare whether two pattern lists are equal or not. c(x,y) is called for comparison of protocol-dependent data.
1998-10-19Generate router_id automatically if possible (standard "smallest of localMartin Mares
regular interface addresses" rule). Protocols should NOT rely on router_id existence -- when router ID is not available, the router_id variable is set to zero and protocols requiring valid router ID should just refuse to start, reporting such error to the log.
1998-10-17Fixed misleading comment.Martin Mares
1998-10-17Solve chicken-and-egg problems with protocol startup. We now queue all inactiveMartin Mares
protocols and don't send route/interface updates to them and when they come up, we resend the whole route/interface tables privately. Removed the "scan interface list after protocol start" work-around.
1998-06-04Now sending IF_CHANGE_CREATE when a new interface appears and IF_CHANGE_UPMartin Mares
only if it's really up.
1998-06-01- Rewrote whole interface logic. Removed support for multiple addresses perMartin Mares
interface since it makes much trouble everywhere. Instead, we understand secondary addresses as subinterfaces. - In case interface addresses or basic flags change, we simply convert it to a down/up sequence. - Implemented the universal neighbour cache. (Just forget what did previous includes say of neighbour caching, this one is brand new.)
1998-05-26Implemented scanning of network interfaces. Mostly very ugly code due toMartin Mares
terrible kernel interface (SIOGIFCONF and friends).
1998-05-24Added interface index (used only by OS-dependent code since ifindexes itselfMartin Mares
are OS-dependent).
1998-05-24Point-to-point links: added address of the opposite end.Martin Mares
1998-05-03Next attempt on data structures...Martin Mares
1998-04-28Changed #include <x/y> to #include "x/y" for our local includes, so thatMartin Mares
gcc -MM can be used to separate them from the system ones. Added automatic generation of dependencies.
1998-04-23Added IP address manipulation macros, interface declarations and logging.Martin Mares
1998-04-22First look at data structures. More to come tomorrow...Martin Mares