summaryrefslogtreecommitdiffstats
path: root/isisd
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'patches/dl_isisd-extract-pl' into dn42David Lamparter2010-02-044-8/+12
|\
| * isisd: change ISIS_METHOD to use C preprocessorDavid Lamparter2010-02-034-8/+12
| | | | | | | | | | | | this fixes warnings from vtysh extract.pl by making sure the isis method files always 'work'. (previously, extract.pl would grab unselected isis method sources and then complain about missing headers)
* | Merge branch 'patches/fr_isisd-fixes' into dn42David Lamparter2010-02-0414-147/+335
|\ \
| * | isisd: md5 link authenticationFritz Reichmann2010-02-036-25/+128
| | | | | | | | | | | | | | | | | | | | | Implement isis circuit md5 authentication * Replace command "isis passwd" with "isis passwd {clear|md5}" * Verify HMAC MD5 on ISIS Hello PDUs * Add HMAC MD5 authentication to md5.h/md5.c from RFC2104
| * | isisd: fixes 7/7: bug #544: unexpected kernel routing tableFritz Reichmann2010-02-033-25/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix Bug 544: isisd produces an unexpected routing table for wide-metric. * isis_spf.c: Accept VTYPE_PSEUDO_TE_IS and VTYPE_NONPSEUDO_TE_IS vertex types for SPF calculation * isis_pdu.c: Change order of TLVs to match Cisco to make bitwise comparision easier for Wireshark. * isis_tlv.c: EXTREME_TLV_DEBUG for TLV debugging instead of EXTREME_DEBUG CSNP triple sending rate (fix 8/7) is merged into this patch. Cc: David Lamparter <equinox@diac24.net>
| * | isisd: fixes 6/7: wrong next-hops from SPFPeter Szilagyi2010-02-033-29/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The forwarding table was filled with wrong next-hops, and which is even worse, it was done in a totally non-deterministic way. The next-hop set for an IP prefix by isisd was the neighbor IS from which the flooded LSP about the IP prefix was arrived. So, if an IS received all the LSPs through its, say, eth0 interface, all entries in the forwarding table contained the next IS reachable via eth0 as the next-hop. The solution is to propagate the correct next-hop further from node to node as the SPF algorithm traverses the graph and selects the next node to be added to the set of already covered nodes. Also, the construction of the tentative node list (the nodes where the shortest path is not known yet) was buggy: if a node was already a member of this list with a certain path cost, and an alternative path was found to it with a lower cost while processing a pseudo-node LSP, it was not added to the list. This way, the path selected by isisd for a certain prefix was the first one it encountered during the LSDB processing. Signed-off-by: Fritz Reichmann <fritz@reichmann.nl>
| * | isisd: fixes 5/7: send proper LSP after DIS electionPeter Szilagyi2010-02-031-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | After an IS has been elected as the Designated IS for a LAN, it did not refresh the content of the pseudo-node after a new node has been connected to the same LAN. Instead, the periodically reoriginated pseudo-node LSP still contained only those IS neighbors that were already present when the DIS election process was commenced. The fix for the problem schedules an LSP regeneration rather than just reoriginating the same LSP with the old content. Signed-off-by: Fritz Reichmann <fritz@reichmann.nl>
| * | isisd: fixes 4/7: circuit state machinePeter Szilagyi2010-02-035-64/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | isisd has a so-called circuit state machine that takes care about the interface state changes, such as initializing, down, up. When an interface was brought down by a link failure, the interface information was deleted and set to NULL. When the link was restored later, the interface was looked up by the old pointer, but since it was cleared, it was never found again, resulting in an interface never entering the up state again. Also, the program regularly crashed because of a deleted pointer in the same context which was later accessed without any further checking. Signed-off-by: Fritz Reichmann <fritz@reichmann.nl>
| * | isisd: fixes 3/7: include hash.h, not hash.cPeter Szilagyi2010-02-031-1/+1
| | | | | | | | | | | | | | | | | | Inclusion of the source file hash.c instead of the proper hash.h header file. Signed-off-by: Fritz Reichmann <fritz@reichmann.nl>
| * | isisd: fixes 2/7: bug #539: wrong hello rate for pseudo nodeFritz Reichmann2010-02-031-2/+24
| | | | | | | | | | | | * isis_pdu.c: Divide hello interval by three, depending if we are DIS or not.
| * | isisd: fixes 1/7: bug #536: crash on apply/delete isis configFritz Reichmann2010-02-036-3/+40
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The crash is due to threads accessing data that gets destroyed during the removal of the configuration. * isis_circuit.c: Destroy adjacencies to stop adjacency expiry thread. Stop PSNP threads. * isisd.c: Change state of circuit back to INIT and reassing the circuit structure to isis->init_circ_list rather than destroying the circuit data structure. Stop SPF threads. Stop LSP generation threads. * isisd.h: Add pointers to LSP threads into area structure in order to stop them in isisd.c * isis_lsp.c: Store pointer to LSP thread in area structure. * isis_pdu.c: Stop PDU generation for a circuit with a removed area. * isis_pfpacket.c: Stop processing received PDUs for a circuit with a removed area.
* | lib: fs namespacing 4/5: add -N command-line parameterDavid Lamparter2010-02-041-1/+6
| | | | | | | | | | this adds a -N option to all daemons which specifies the namespace name to include in all paths through path_set_namespace
* | lib: fs namespacing 2/5: use path_state for vty pathsDavid Lamparter2010-02-042-5/+14
|/ | | | | | use the path_state helper functions for determining vty socket paths in all quagga daemons. this allows for running multiple daemons if a namespace name is set.
* lib: make some structures constantStephen Hemminger2009-12-211-1/+1
| | | | | | | | | | | | | * isisd/isis_pdu.c * maskbit: this pre-initialized array is not modified * lib/prefix.c * maskbit: idem * lib/command.c * facility_map: idem * itoa64: idem * default_motd: make local var static * facility_name(): update local var accordingly * facility_match(): idem
* isisd: fix --enable-isis-topology for 64-bit LinuxDavid Ward2009-12-031-0/+3
|
* isisd: fix BPF ioctl() calls, treat "true" and "false" as reservedDavid Ward2009-12-031-6/+7
| | | | | | | | | | | | | Avoid a potential conflict with the C99 defines 'true' and 'false' found in <stdbool.h> by choosing better variable names. Also fix the calls to these ioctls, as described in <net/bpf.h> in FreeBSD, NetBSD, and OpenBSD: * BIOCGBLEN, BIOCIMMEDIATE, BIOCSSEESENT (the parameter should be of type 'u_int') * BIOCPROMISC (there should be no parameters)
* all: check return value from daemon() callStephen Hemminger2009-08-131-2/+5
| | | | | | * */*main.c: (main) Current versions of Gcc warn if the return value for daemon() is not checked. So add a simple test and exit on failure.
* [cleanup] convert bzero() deprecated by POSIX to memset()Jeremy Jackson2009-06-191-1/+1
| | | | | autoscan 2.62 complains about bzero(), so a good fix nowadays is to just replace it.
* [cleanup] Make command nodes staticStephen Hemminger2009-06-122-2/+2
| | | | | The cmd_nodes used to configure vty, can mostly be static so (basic data hiding 101).
* [administrivia] Update gitignore filesPaul Jakma2008-08-221-1/+1
| | | | - Add more stuff, archive libraries, etc..
* [administrivia] Git should ignore backup files and .loT filesPaul Jakma2008-08-223-0/+9
|
* [trivia] Remove ChangeLog files, as this data is now maintained in SCMPaul Jakma2008-08-221-600/+0
|
* [isisd:DLPI] Try open vanity-named DLPI dev before style 1,2Jingjing Duan2008-08-221-6/+17
| | | | | | | | | | 2008-08-13 Jingjing Duan <Jingjing.Duan@sun.com> * isisd/isis_dlpi.c: (open_dlpi_dev) Clearview-UV device nodes are under /dev/net, try opening there before attempting style 1 or 2 names. Signed-off-by: Paul Jakma <paul@quagga.net>
* [ospfd/isisd] Switch to lib/ Fletcher checksum, fixing bug in isisdJingjing Duan2008-08-224-129/+13
| | | | | | | | | | 2008-08-13 Jingjing Duan <Jingjing.Duan@sun.com> * ospfd/: Remove the old checksum implementation and use the consolidated version. * isisd/: ditto, thus fixing isisd checksuming on big-endian. Signed-off-by: Paul Jakma <paul@quagga.net>
* [isisd] Fix packet filtering with DLPIJingjing Duan2008-08-221-3/+9
| | | | | | | | | | 2008-08-13 Jingjing Duan <Jingjing.Duan@sun.com> * isisd/isis_dlpi.c: Change ioctl from PFIOCSETF (transparent mode) to I_STR (non-transparent mode). The old code resulted in no filtering at all. Signed-off-by: Paul Jakma <paul@quagga.net>
* [build] Test for GNU-style PIE support in toolchain and enablePaul P Komkoff Jr2008-08-221-0/+4
| | | | | | | | | | | 2008-08-13 Paul P Komkoff Jr <i@stingr.net> * configure.ac: add a configure flag and autoconf macro, which will determine if your toolchain supports PIE. * */Makefile.am: add corresponding CFLAGS and LDFLAGS into appropriate places. Signed-off-by: Paul Jakma <paul@quagga.net>
* [administrivia] Add .gitignore files, based on .cvsignores.Paul Jakma2008-08-223-0/+24
|
* [isisd] Bug #437: fix ssert caused by bad list managementPaul Jakma2008-01-294-5/+34
| | | | | | | | | | | | | 2008-01-29 James Carlson <james.d.carlson@sun.com> * Fix bug #437, assert due to bogus index management * isis_flags.c: (flags_initialize) new * (flags_get_index) fix off by one, leading to list assert on null node data. (flags_free_index) ditto. * isisd.c: (isis_area_create) use flags_initialize (isis_area_destroy) deconfigure circuits when taking down area.
* [isisd] Commit new files which should have been part of previous commit..Paul Jakma2007-08-083-0/+1320
|
* [isisd] Add support for Solaris DLPIPaul Jakma2007-08-079-647/+48
| | | | | | | | | | 2007-08-07 James Carlson <james.d.carlson@sun.com> * configure.ac: Added support for separate link-layer access mechanisms in isisd. * isis_network.c: split up into isis_bpf.c, isis_dlpi.c, and isis_pfpacket.c, selected by autoconf, and added DLPI support. * (general) Fixed to allow compilation and use on Solaris.
* [autoconf] bugs 162,303,178: Fix 'present but can not be compiled' warningsPaul Jakma2007-05-101-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | 2007-05-09 Paul Jakma <paul.jakma@sun.com> * configure.ac: sys/conf.h depends on sys/param.h, at least on FBSD 6.2. (bug #363) Should check for in_pktinfo for IRDP 2006-05-27 Paul Jakma <paul.jakma@sun.com> * configure.ac: General cleanup of header and type checks, introducing an internal define, QUAGGA_INCLUDES, to build up a list of stuff to include so as to avoid 'present but cant be compiled' warnings. Misc additional checks of things missing according to autoscan. Add LIBM, for bgpd's use of libm, so as to avoid burdening LIBS, and all the binaries, with libm linkage. Remove the bad practice of using m4 changequote(), just quote the []'s in the case statements properly. This should fix bugs 162, 303 and 178. * */*.{c,h}: Update all HAVE_* to the standard autoconf namespaced HAVE_* defines. I.e. HAVE_SA_LEN -> HAVE_STRUCT_SOCKADDR_SA_LEN, * bgpd/Makefile.am: Add LIBM to bgpd's LDADD, for pow().
* [isisd] Fix compiler warnings and allow v4-only compilationPaul Jakma2006-12-0817-35/+118
| | | | | | | | | | | 2006-12-08 Hannes Gredler <hannes@gredler.at> * isis_adjacency.c: (isis_new_adj) Allow NULL snpa argument. * isis_pdu.c: (various) Update calls to isis_new_adj() to pass NULL and use default. * (general) Add forward declarations where required. Fix up const char *'s. Allow V4-only compilation.
* [daemon startup] Add --dry-run/-C argument to daemons, to check config file ↵Paul Jakma2006-10-151-1/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | syntax 2006-10-04 Oliver Hookins <ohookins@gmail.com> * bgpd/bgp_main.c: Add configuration check option, with '-C' rather than '-c' for consistency between daemons. * isisd/isis_main.c: ditto * ospf6d/ospf6_main.c: ditto * ospfd/ospf_main.c: ditto * ripngd/ripng_main.c: ditto * vtysh/vtysh_main.c: ditto * ripd/rip_main.c: Change the config check option to '-C' and tidy up the code. * zebra/main.c: ditto 2006-10-04 Stergiakis Alexandros <astergiakis@antcor.com> * ripd/rip_main.c: This trivial patch introduces a new command-line option '-c', which instructs zebra/ripd to check its configuration file for validity, print any error message, and then exit. This is useful when the configuration file is edited by hand or otherwise, and you simply want to validate it without any other effect. * zebra/main.c: ditto
* [zserv] fix up custom isisd and bgpd Zserv functions for new format.paul2006-01-172-4/+6
| | | | | | | | | | 2006-01-17 Paul Jakma <paul.jakma@sun.com> * bgp_nexthop.c: (zlookup_read*) convert to new Zserv format. (zlookup_query_ipv6) ditto. (bgp_import_check) ditto. * isis_zebra.c: (isis_zebra_route_add_ipv4) fix for new zserv format.
* [isisd] remove includes of common system headers.paul2005-11-2013-29/+9
| | | | | | | | | | | 2005-11-20 Paul Jakma <paul.jakma@sun.com> * (general) remove includes of very common system headers, these are already picked up by zebra.h. Further, including them before zebra.h messes up all our lovely (sarcasm) autoconf'd detecting of platform specific things. Recent addition of stdint.h to configure.ac and zebra.h appears particularly to throw up this problem.
* * isis_adjacency.c: Stop expire timer while deleting adjacency.hasso2005-10-016-3/+43
| | | | | | | | | | * isis_events.c: Stop pseudo LSP thread while resigning circuit from level. * isis_route.c: Fix compiling with EXTREME_DEBUG. Mark route as not in sync with zebra if it's changed. * isis_spf.c: Schedule route validating etc even if tent was empty. It's probably because we just don't have any adjacencies. * isisd.c: Write minimum spf interval into configuration.
* 2005-09-30 Vincent Jardin <vincent.jardin@6wind.com>jardin2005-10-012-0/+5
| | | | * isis_route.c: fix EXTREME_DEBUG compilation
* 2005-09-29 Paul Jakma <paul.jakma@sun.com>paul2005-09-291-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * configure.ac: Add the test for Solaris least-privileges. Set defines for whether capabilities are supported and whether of the linux or solaris variety. Add missing-prototypes, missing-declarations, char-subscripts and cast-qual warnings to default cflags, cause Hasso enjoys warnings, and we really should clean the remaining ones up. (ie isisd..). * (*/*main.c) Update the zebra_capabilities_t arrays in the various daemons to match the changes made in lib/privs.h. * zebra.h: Solaris capabilities requires priv.h to be included. * privs.{c,h}: Add support for Solaris Least-Privileges. privs.h: Reduce some of the abstract capabilities, which do not have rough equivalents on both systems. Rename the net related caps to _NET, as they should have been in first place. (zprivs_terminate) should take the zebra_privs_t as argument so that it can update change pointer. Add an additional privilege state, ZPRIVS_UNKNOWN. * privs.c: (various capability functions) Add Solaris privileges variants. (zprivs_state) Use privs.c specific generic types to represent various capability/privilege related types, so that each can be typedef'd as appropriate on each platform. (zprivs_null_state) static added, to hold the state the null method should report (should be raised by default, and LOWERED if zprivs_terminate has been called) (zprivs_state_null) Report back the zprivs_null_state. (cap_map) Make it able to map abstract capability to multiple system capabilities. (zcaps2sys) Map to abstract capabilities to multiple system privileges/capabilities. (zprivs_init) move capability related init to seperate function, zprivs_caps_init. (zprivs_terminate) ditto, moved to zprivs_caps_terminate. Set the change_state callback to the NULL state, so the user can continue to run and use the callbacks.
* * *.c: Massive cleanup of lists loops. Stop abusing ALL_LIST_ELEMENTS.hasso2005-09-2811-200/+155
| | | | | | Replace XMALLOC + memset with XCALLOC. Fix some indentation issues. The only really significant change is simplified isis_delete_adj function in isis_adjacency.c.
* * isis_dynh.c, isisd.h: Implement dynamic hostname cache cleanup.hasso2005-09-284-3/+39
| | | | | * isis_lsp.c: Refresh dynamic hostname in the cache while refreshing topology LSP.
* * isis_lsp.c: Make topology generator generate TE TLVs if necessary.hasso2005-09-282-13/+57
| | | | | Also take care of inserting dynamic hostname of topology TLVs into cache.
* * isis_spf.c: Changing cost from uint16_t to uint32_t. Unsethasso2005-09-267-44/+185
| | | | | | | | | | | | | ISIS_ROUTE_FLAG_ACTIVE flag before running SPF. * isisd.[ch]: Separate route tables for different levels. SPF is done separately, but in case of L1L2 area they have to be merged. * isis_zebra.c: Set/unset ISIS_ROUTE_FLAG_ZEBRA_SYNC flag correctly in case of adding/removing IPv4 routes. * zebra_route.c: Rework route validating process. Merging L1 and L2 tables in case of L1L2 area. In short - many changes to make SPF work more correctly, add/remove to/from RIB also works now. It's still very far from perfect though.
* * isis_spf.[ch]: Added TE TLVs to the SPF process. It seems to workhasso2005-09-263-31/+107
| | | | | mostly, but needs certainly much more testing, especially transition situation.
* * isis_lsp.c: Put correct metric info into TE TLV's. Wide metric ishasso2005-09-262-4/+25
| | | | used only if only wide metric style (extended TLV's) is in use.
* * isis_tlv.[ch]: New function tlv_add_in_addr() to put just one IPv4hasso2005-09-264-14/+37
| | | | | | address into TLV. Used for IPv4 address TLV (in case of LSP) and TE router ID TLV. * isis_lsp.c: Use tlv_add_in_addr() and include router ID in LSP.
* * isis_lsp.c: Support for originating TE IS and IPv4 TLV's. No any subhasso2005-09-262-40/+179
| | | | TLV handling yet.
* * isis_tlv.[ch]: Two new functions - tlv_add_te_is_neighs() andhasso2005-09-263-0/+73
| | | | | tlv_add_te_ipv4_reachs() to handle TLV's with new metric. None of them handle sub TLVs though for now.
* * isis_circuit.[ch]: Some preliminary support for specifying widehasso2005-09-263-10/+24
| | | | circuit metrics. Needs more thinking though, but should do for now.
* * isisd.[ch]: Introduce oldmetric flag for area and transitionhasso2005-09-263-14/+36
| | | | | metricstyle command. With metricstyle wide only extended TLVs should be used.
* * dict.[ch]: Revert all nonfunctional changes. It's external modulehasso2005-09-253-1204/+1022
| | | | | | | imported from kazlib and it's better not to screw it - there is theoretical chance that we might want to merge changes from upstream at some point. Also avoid the loss of info about upstream version (rcsid).