summaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2004-09-132004-09-13 Jose Luis Rubio <jrubio@dit.upm.es>paul
(at Technical University of Madrid as part of Euro6ix Project) Enhanced Route Server functionality and Route-Maps: * bgpd/bgpd.h: Modified 'struct peer' and 'struct bgp_filter' to support rs-clients. A 'struct bgp_table *rib' has been added to the first (to mantain a separated RIB for each rs-client) and two new route-maps have been added to the last (for import/export policies). Added the following #defines: RMAP_{IN|OUT|IMPORT|EXPORT|MAX}, PEER_RMAP_TYPE_{IMPORT|EXPORT} and BGP_CLEAR_SOFT_RSCLIENT. * bgpd/bgpd.c: Modified the functions that create/delete/etc peers in order to consider the new fields included in 'struct peer' for supporting rs-clients, i.e. the import/export route-maps and the 'struct bgp_table'. * bgpd/bgp_route.{ch}: Modified several functions related with receiving/sending announces in order to support the new Route Server capabilities. Function 'bgp_process' has been reorganized, creating an auxiliar function for best path selection ('bgp_best_selection'). Modified 'bgp_show' and 'bgp_show_route' for displaying information about any RIB (and not only the main bgp RIB). Added commands for displaying information about RS-clients RIBs: 'show bgp rsclient (A.B.C.D|X:X::X:X)', 'show bgp rsclient (A.B.C.D|X:X::X:X) X:X::X:X/M', etc * bgpd/bgp_table.{ch}: The structure 'struct bgp_table' now has two new fields: type (which can take the values BGP_TABLE_{MAIN|RSCLIENT}) and 'void *owner' which points to 'struct bgp' or 'struct peer' which owns the table. When creating a new bgp_table by default 'type=BGP_TABLE_MAIN' is set. * bgpd/bgp_vty.c: The commands 'neighbor ... route-server-client' and 'no neighbor ... route-server-client' now not only set/unset the flag PEER_FLAG_RSERVER_CLIENT, but they create/destroy the 'struct bgp_table' of the peer. Special actions are taken for peer_groups. Command 'neighbor ... route-map WORD (in|out)' now also supports two new kinds of route-map: 'import' and 'export'. Added commands 'clear bgp * rsclient', etc. These commands allow a new kind of soft_reconfig which affects only the RIB of the specified RS-client. Added commands 'show bgp rsclient summary', etc which display a summary of the rs-clients configured for the corresponding address family. * bgpd/bgp_routemap.c: A new match statement is available, 'match peer (A.B.C.D|X:X::X:X)'. This statement can only be used in import/export route-maps, and it matches when the peer who announces (when used in an import route-map) or is going to receive (when used in an export route-map) the route is the same than the one specified in the statement. For peer-groups the statement matches if the specified peer is member of the peer-group. A special version of the command, 'match peer local', matches with routes originated by the Route Server (defined with 'network ...', redistributed routes and default-originate). * lib/routemap.{ch}: Added a new clause 'call NAME' for use in route-maps. It jumps into the specified route-map and when it returns the first route-map ends if the called RM returns DENY_MATCH, or continues in other case.
2004-08-31Assorted changes from work at BBN. Most are minor, and several are ingdt
support of more significant changes not in this commit. The last item in the ChangeLog below may be needed for p2mp to work correctly. 2004-08-31 David Wiggins <dwiggins@bbn.com> * hash.c (hash_iterate): Save next pointer before calling procedure, so that iteration works even if the called procedure deletes the hash backet. * linklist.h (listtail): new macro, not yet used. 2004-08-31 David Wiggins <dwiggins@bbn.com> * ospf_spf.c (ospf_spf_calculate): Many more comments and debug print statements. New function ospf_vertex_dump used in debugging. 2004-08-31 David Wiggins <dwiggins@bbn.com> * ospf_spf.h (struct vertex): Comments for flags and structure members. 2004-08-31 David Wiggins <dwiggins@bbn.com> * ospf_route.c: When finding an alternate route, log cost as well. 2004-08-31 David Wiggins <dwiggins@bbn.com> * ospf_interface.c (ospf_lookup_if_params): Initialize af in struct prefix allocated on stack. 2004-08-31 David Wiggins <dwiggins@bbn.com> * ospf_packet.c (ospf_ls_ack_send_delayed): In p2mp mode, send acks to AllSPFRouters, rather than All-DR.
2004-08-27Make "terminal length <0-512>" command work in vtysh.hasso
2004-08-26add () on SOPT_SIZE_CMSG_PKTINFO_IPV4() use, to match def.gdt
Thanks to Hasso for code review.
2004-08-262004-08-26 Greg Troxel <gdt@fnord.ir.bbn.com>gdt
* sockopt.h: Define method-independent macro for callers of get_ifindex to use for cmsg length.
2004-08-252004-08-19 Paul Jakma <paul@dishone.st>paul
* zebra.h: add MAX and MIN defines (eg for ospf6d)
2004-08-192004-08-19 Paul Jakma <paul@dishone.st>paul
2004-08-19 Paul Jakma <paul@dishone.st> * sockopt.c: include sockopt.h rename some of the _pktinfo_ functions to _ifindex, where that is their purpose. (getsockopt_ipv6_pktinfo_ifindex) renamed to getsockopt_ipv6_ifindex. (setsockopt_ipv4_pktinfo) renamed to setsockopt_ipv4_ifindex (setsockopt_pktinfo) update with previous and add comment re AF_INET portability. (setsockopt_ifindex) generic ifindex function ala setsockopt_pktinfo. (getsockopt_ipv4_pktinfo_ifindex) renamed to getsockopt_ipv4_ifindex. (getsockopt_ipv4_ifindex) rejiggling to reduce repeated ifdef/elses. pktinfo case forgot to set ifindex. (getsockopt_pktinfo_ifindex) renamed to getsockopt_ifindex. update some calls to renamed functions. * sockopt.h: Update renamed exported functions Rename the CMSG_SIZE macros to IFINDEX. Guard IPv4 PKTINFO in a conditional define.
2004-08-182004-08-18 Paul Jakma <paul@dishone.st>paul
* vty.c: (vty_serv_un) set unix vty socket to nonblocking to prevent inadvertent blocking of daemons by use of vtysh. TODO: disentangle manual paging from the buffer_write path so that unix vty can use this path too and be reliable.
2004-07-23(somewhat unrelated cleanups, but all are very minor)gdt
2004-07-23 Greg Troxel <gdt@poblano.ir.bbn.com> * */Makefile.am: Use ../dir/libfoo.la, rather than "-L../dir -lfoo", to avoid linking against installed libraries from a previous version. * {lib,ospfd,ospfclient}/Makefile.am: explicitly define the shared library version number to be 0.0 * configure.ac: remove spurious , so extract.pl is chmod'd +x. * HACKING: explain shared library versioning rules
2004-07-232004-07-23 Greg Troxel <gdt@poblano.ir.bbn.com>gdt
* sockopt.c (getsockopt_ipv4_pktinfo_ifindex): Make this compile on NetBSD, and add comments to make it less confusing. Change the sense of the SUNOS_5 test to make parallel structure between the variables and the code.
2004-07-232004-07-23 Paul Jakma <paul@dishone.st>paul
* sockopt.h: Add SOPT_SIZE_CMSG_PKTINFO{_IPV{4,6}} define, for sizeof pktinfo as appropriate, to be used when allocating msg buffers. export setsockopt_pktinfo() and getsockopt_pktinfo_ifindex() * sockopt.c: (setsockopt_pktinfo_ifindex) new function to portably set received ifindex sock option. (getsockopt_pktinfo_ifindex) portably retrieve ifindex. (getsockopt_cmsg_data) retrieve indicated control info from message header. (getsockopt_ipv6_pktinfo_ifindex) ipv6 version of above. (setsockopt_ipv4_pktinfo) v4 version (setsockopt_pktinfo) the exported version (getsockopt_ipv4_pktinfo_ifindex) v4 specific version (getsockopt_pktinfo_ifindex) the exported version
2004-07-222004-07-14 Paul Jakma <paul@dishone.st>paul
* sigevent.c: (quagga_signal_handler) add a global caught flag, set the flags to a constant rather increment to be kinder. (quagga_sigevent_process) new function, to do core of what quagga_signal_timer did. dont block signals at all as sig->caught is volatile sig_atomic_t and should be safe to access from signal and normal contexts. The signal blocking is unneeded paranoia, but is left intact under an ifdef, should some platform require it. Check global caught flag before iterating through array. (quagga_signal_timer) nearly everything moved to quagga_sigevent_process. Left in under ifdef, in case some platform could use a regular timer check for signals. * sigevent.h: quagga_sigevent_process declaration. * thread.c: (thread_fetch) check for signals at beginning of scheduler loop, check for signals if select returns EINTR.
2004-07-172004-07-17 Paul Jakma <paul@dishone.st>paul
* if.c: (if_cmp_func) Add comment suggested by Greg Troxel.
2004-07-132004-07-13 Greg Troxel <gdt@poblano.ir.bbn.com>gdt
* sigevent.c: Don't block SIGTRAP and SIGKILL. Blocking SIGTRAP confuses gdb, at least on NetBSD 2.0_BETA, where the block succeeds.
2004-07-092004-07-09 Paul Jakma <paul@dishone.st>paul
* jhash.{c,h}: New files. Bob Jenkins' public domain hashing function, as implemented in linux kernel by David Miller.
2004-07-092004-07-09 Paul Jakma <paul@dishone.st>paul
* Merge Kunihiro's 'show route-map' change and add compatibility aliases for route-map continue
2004-07-09more cvsignorespaul
2004-07-09Update cvsignore's for *.lo and *.la - libtool filespaul
2004-07-092004-07-09 Juris Kalnins <juris@mt.lv>paul
* if.c: (if_cmp_func) fix for interface names where name is same, but one has no number, eg "devtyp" and "devtyp0".
2004-06-30Add libtool support.gdt
libzebra and libospfapiclient are now built shared, and linked shared with the daemons. This reduces the memory needed when running multiple daemons; each daemon is at least 150k smaller. Static libraries are still built, and libtool should use them on platforms which don't have shared libaries. As with autoconf, the user of a distribution does not need libtool; one just needs that to build from CVS. libospf.a is still a non-shared library, and still installed, not because that makese sense, but because I don't understand why it is the way it is now. Note that the tree was tagged 'libtool-before' just before this commit.
2004-06-212004-06-21 Paul Jakma <paul@dishone.st>paul
* ChangeLog: fix my last update config.h -> zebra.h ;) * zebra.h: Fix gcc check.
2004-06-20Removing code which looked at current dir for config file before attemptinghasso
to read system one.
2004-06-12OK, here it is - irdp support. But don't expect me to fix any bugs in it.hasso
2004-06-112004-06-11 Sowmini Varadhan <sowmini.varadhan@sun.com>paul
* filter.c: (access_list_remark_cmd) buffer_putstr doesnt need cast to u_char. (ipv6_access_list_remark_cmd) ditto. if.c: ditto * network.c: (readn/writen) pointer arg should be type u_char. * plist.c: needs to include stream.h, not declare stream functions internally. (various) Add static qualifier to internal functions. (prefix_list_type_str) extraneous breaks in switch statement. (ip_prefix_list_description_cmd) buffer_putstr doesnt need cast * stream.h: depends on plist.h and export stream_put_prefix * vty.c: (vty_<telnet option build functions>) should use unsigned char, telnet options are 0 -> 255. * zclient.c: various u_char<->char type cleanups. * zebra.h: Having to define CMSG_* can apply to more than just BSDI_NRL. * ripd.c: (rip_distribute_update_all) distribute list hook function pointer prototype requires struct prefix_list * arg. (rip_distribute_update_all_wrapper) update to pass required arg, NULL.
2004-06-092004-06-09 Paul Jakma <paul@dishone.st>paul
* config.h: __attribute__ is a gcc'ism
2004-06-06CVS ignore Linux NFS silly-delete .nfs* filespaul
2004-06-042004-06-04 Paul Jakma <paul@dishone.st>paul
* type mismatch fixes
2004-05-18Start of new ospf6d merge from Zebra.hasso
2004-05-082004-05-08 Paul Jakma <paul@dishone.st>paul
* bgp_zebra.c: (bgp_interface_address_add) sync to zclient changes (bgp_interface_address_delete) ditto. (bgp_zebra_announce) ditto. (bgp_zebra_withdraw) ditto. * isis_zebra.c: Sync with zclient changes. * zclient.c (zapi_ipv4_route) Follow Sowmini's lead and describe message format. * ospf6_zebra.c: Sync to zclient changes * ospf_zebra.c: Sync with lib/zclient changes * rip_zebra.c: sync with zclient changes. * rip_interface.c: ditto. * ripng_{interface,zebra}.c: sync with zclient changes 2004-05-08 Sowmini Varadhan <sowmini.varadhan@sun.com> * zclient.c: (zapi_ipv4_add) collapsed into zapi_ipv4_route (zapi_ipv4_delete) ditto. (zapi_ipv4_route) add/delete a route by way of cmd arg. (zapi_ipv6_add) collapsed into zapi_ipv6_route. (zapi_ipv6_delete) ditto. (zapi_ipv6_route) add/delete a route by way of cmd arg. (zebra_interface_address_delete_read) collapsed into zebra_interface_address_read. (zebra_interface_address_delete_read) ditto. (zebra_interface_address_read) read address add/delete messages by way of type argument. Describe command message format. (zebra_interface_add_read) Unconditionally read new ifmtu6 field. Describe command message format. (zebra_interface_state_read) Unconditionally read new ifmtu6 field. (zclient_redistribute_set) Collapsed into zclient_redistribute (zclient_redistribute_unset) ditto (zclient_redistribute) set/unset redistribution. (zclient_redistribute_default_set) Collapsed into zclient_redistribute_default. (zclient_redistribute_default_unset) ditto. (zclient_redistribute_default) Redistribute default set/unset. * zclient.h: delete zapi_ipv{4,6}_add, zapi_ipv{4,6}_delete. Add zapi_ipv{4,6}_route. delete zclient_redistribute_set/unset. Add zclient_redistribute. Ditto for zclient_redistribute_default_{set/unset}.
2004-05-082004-05-08 Sowmini Varadhan <sowmini.varadhan@sun.com>paul
* command.c: (sockunion_getsockname) use socklen_t for len. (sockunion_getpeername) ditto.
2004-05-082004-05-08 Sowmini Varadhan <sowmini.varadhan@sun.com>paul
* if.h: Add mtu6 field to struct interface, IPv6 MTU may differ from IPv4, and Solaris treats the MTU's differently. Add connected_add_by_prefix, for use by later patch. * if.c: (connected_add_by_prefix) Add prefix to connected list. (if_flag_dump) Solaris: Dump IFF_IPv4/6 flag (if_dump) Dump mtu6 flag, for HAVE_IPV6.
2004-04-212004-04-21 Boris Kovalenko <boris@tagnet.ru>paul
* daemon.c: (daemon) fix check for error return from setsid
2004-03-162004-03-16 David Young <dyoung@pobox.com>gdt
* (many) reference <lib/version.h> rather than "version.h", because version.h is a generated file and not present in the source tree when using objdir builds. (committed by gdt) works fine with normal builds; didn't try objdir
2004-03-04Many warning fixes from PC Drew ([quagga-dev 940]) and removing using PAGERhasso
from vtysh ([quagga-dev 932]).
2004-02-13add some /* XXX assert() */ for questionable assumptions (no codegdt
change - just notes to others).
2004-01-192004-01-19 Paul Jakma <paul@dishone.st>paul
* tests/test-sig.c: New file, regression test for sigevents. * lib/Makefile.am: add sigevent.{c,h} * (isis|rip|ripng|ospf|ospf6|bgp)d/\1_main.c: modify for sigevents. * zebra/main.c: ditto.
2004-01-192004-01-19 Paul Jakma <paul@dishone.st>paul
* sigevent.{c,h}: New files, implement event handled signals. see signal_init() in sigevent.h.
2004-01-13Explain the dual use of struct prefix for CIDR prefixes andgdt
address/netmask pairs, and clarify the two comparison functions.
2003-12-23Add comments about isisd integration.jardin
2003-12-23Merge isisd into the Quagga's framework:jardin
- add privs support - use misc quagga's definitions - make it compile"able" - fix segfault cases related to hostname() - add debug isis xxx command This patch has been approved by Paul Jakma.
2003-12-22Reorder free(f); unlink(f); to unlink before freeing.gdt
2003-12-222003-12-22 Christian Hammers <ch@lathspell.de>gdt
* configure.ac (and everywhere a regular file is opened for writing): use file permissions from configure rather than compiled-in umask.
2003-12-22Revert my "microfix". It was caused by misreading code. Gilad is right ashasso
always.
2003-12-22note that order of = items is undefined, probablygdt
2003-12-22comments about struct listgdt
2003-12-22add comments clarifying the operation of listnode_add_sortgdt
2003-12-21lib/if.c part from [quagga-dev 552] and lib/inklist.c part from [quagga-devhasso
555]. Okayed by Paul.
2003-12-08{lib,ospfd,ospfapi}/Makefile.am:gdt
Use pkginclude_HEADERS rather than include_HEADERS to place includes in ${prefix}/include/quaggainstead of polluting ${prefix}/include.
2003-10-302003-10-30 sowmini.varadhan@sun.compaul
* lib/pid_output.c: (pid_output_lock) undo paulj's mindless edit.
2003-10-292003-10-29 Paul Jakma <paul@dishone.st>paul
* lib/routemap.c: (route_map_apply_index) renamed to route_map_apply_match. (route_map_apply_match) Take rule list as argument rather than index. concentrate solely on match logic. (route_map_apply) Properly implement the route map statement logic, according to the table, especially the on-match exit policy.