Paul Jakma [Wed, 2 Dec 2015 16:47:43 +0000 (16:47 +0000)]
docs: Update bgpd docs, inc. on decision process, and with a section on MED.
* bgpd.texi: Document the -l argument. Update the 'BGP decision process' table
to reflect what /actually/ is implemented. Add docs on 'compare-routerid' in
the bestpath section.
Add a section on MED, to highlight the issues it has by default, and to
highlight that it is terminally broken for its original purpose in many
modern iBGP topologies.
Mention the potential workarounds and fixes.
* routemap.texi: set an anchor on 'set metric' so bgpd.texi can reference it.
Paul Jakma [Tue, 20 Oct 2015 15:14:56 +0000 (16:14 +0100)]
doc: Add 'OSPF Fundamentals' section to OSPF docs
* ospf_fundamentals.texi: New section explaining the fundamentals of OSPF
for system admins, to help them debug their networks.
* {Makefile.am,ospfd.texi}: include and build previous
Donald Sharp [Tue, 29 Sep 2015 13:25:10 +0000 (09:25 -0400)]
quagga: Additional centos 6 -enable-werror fixes
This commit fixes these warnings:
1) bgpd/bgp_nexthop.c - dereferencing pointer 'X' does break strict-aliasing rules
2) pimd/pim_igmp_join.c - dereferencing pointer 'X' does break strict-aliasing rules
3) ripd/ripd.c - 'ifaddr.prefixlen' may be used uninitialized in this function
David Lamparter [Tue, 15 Sep 2015 09:19:46 +0000 (02:19 -0700)]
build: make libraries self-reliant
libospf and libospfclient both need libzebra, so they should link
against it. The days of libtool propagating upwards such dependencies
are nearing their end...
Paul Jakma [Sun, 21 Jun 2015 22:00:13 +0000 (23:00 +0100)]
HACKING: Change format to MarkDown
* HACKING: Converted initially from LaTeX to markdown with:
'pandoc -f latex -t markdown HACKING.tex'
Then tweaked by hand to add a header with some suitable variables for the
pandoc LaTeX template to make better use of the page space, and to add
newpages so the title page is standalone as in the previous version.
Also went through and reflowed paragraphs best as I could to make them
match the previous document, to make it a little easier to verify nothing
had been changed other than the markup, via diff.
PDF can be generated with: 'pandoc -o HACKING.pdf HACKING.md'
Morgan Stewart [Thu, 17 Sep 2015 23:04:30 +0000 (19:04 -0400)]
Fixed if_add_update possible null dereference
Coverity Scan #1221454
In zebra/interface.c if_data could be null dereferenced without early
check.
Signed-off-by: Morgan Stewart <morgan@cumulusnetworks.com> Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
(cherry picked from commit c8394ace7081ef0e71f3d162067c83c2629fc088)
I found that zebra doesn't set correct IPv6 address in its result because of
using *addr's address. Although I'm using 0.99.22, the latest version has
also use "&addr". Shouldn't it use "addr"?
Signed-off-by: Hiroshi Yokoi <hiroshi.yokoi.0313@gmail.com> Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
(cherry picked from commit 8ccd74c29f5242f312c1e0561497558482c9be65)
Fernando Soto [Mon, 11 May 2015 20:52:00 +0000 (20:52 +0000)]
ospfd: trap on state change seems to send incorrect value for ospfNbrState
The ospfNbrState in the ospf trap sent from ospfd shows an incorrect state.
For example, when the connection goes down, the ospfNbrState in the trap is
sent as '8' (full). When the connection is reestablished, the state is sent
as '7' (loading).
The reason seems to be that the trap is sent from nsm_notice_state_change()
before the state is actually updated by calling nsm_change_state().
After applying the attached patch, the traps are sent with nbrState '1' when
the connection goes down and '8' when it goes back up.
* 94266fa822ba "ospfd: Self nbrs needs to be rebuilt when router ID changes."
deleted the nbr_self, and added it back, but ospf_nbr_add_self doesn't
actually create the nbr_self - it assumes it's already there. Leading
to use after free and crashes after a router-id change.
* ospfd/ospf_neighbor.{c,h}: (ospf_nbr_self_reset) Little helper to reset the
nbr_self correctly.
* ospf_interface.c: (ospf_if_cleanup) moved code to ospf_nbr_self_reset
* ospfd.c: (ospf_router_id_update) Use ospf_nbr_self_reset instead of doing
the reset badly, fixing 94266fa822ba.
isis_pdu.c :
New adjacency did not always get added to LSP neighbor list.
The adjacencies that were created once minimum time allowed before LSP
retransmission had surpassed, instantly got their LSP regenerated, but
the adjacency circuit type was not set to IIH PDU circuit type before
the LSP was regenerated , hence didn't pass the check for adjacency
circuit type in lsp_build(), and the adjacency was not added to neighbor list.
When a new adjacency is up, to build LSP with neighbor entry corresponding
to the adjacency, set adjacency circuit type to circuit type from hello PDU
header before new LSP is regenerated/built. This will result in the new
adjacency entry getting added to the LSP neighbor list TLV.
Joakim Tjernlund [Thu, 19 Nov 2009 14:27:30 +0000 (15:27 +0100)]
ospfd: Self nbrs needs to be rebuilt when router ID changes.
Some self nbrs are identified by router_id, these needs
to be rebuilt instead of just resetting router ID.
Possibly one could optimize for !(virtual | ptop) links
by doing oi->nbr_self->router_id = router_id instead.
Router ID will change once after startup config has been
read and zebra reports router ID, unless router ID has
been configured in ospf.
Wenjian Ma [Fri, 19 Jun 2015 02:53:26 +0000 (10:53 +0800)]
lib, stream: fix stream sanity checks
Because operator "!" has higher priority than "&&",
So we put the "&&" expression in "()" to check both getp and endp. Acked-by: Donald Sharp <sharpd@cumulusnetworks.com>
(cherry picked from commit 1ed8ce47b922b71f3b3cdd661e647bbe7ed2eca7)
Timo Teräs [Sat, 23 May 2015 08:08:38 +0000 (11:08 +0300)]
lib: make sockunion2str safer to use
It's mostly used for logging, and the return value is never
checked, so try to make it valid.
Signed-off-by: Timo Teräs <timo.teras@iki.fi> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit 53009d387a633997b16d32224b50451b5c81b61a)
Timo Teräs [Fri, 22 May 2015 10:41:01 +0000 (13:41 +0300)]
route table: constify some APIs
Signed-off-by: Timo Teräs <timo.teras@iki.fi> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit 3293bc280f15d8e3c04e0bf9b0a8d54d342a87a9)
Timo Teräs [Fri, 22 May 2015 10:40:59 +0000 (13:40 +0300)]
sockunion: add accessors for sockunion address
Upcoming nhrp code will use this, and it can be used to remove
the sockunion2ip(X) macro.
Signed-off-by: Timo Teräs <timo.teras@iki.fi> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit 483abc037b0ac4b3ed168c4810bb14ea338fa80c)
Timo Teräs [Wed, 29 Apr 2015 06:43:03 +0000 (09:43 +0300)]
sockopt: add support for querying tcp round-trip-time
Signed-off-by: Timo Teräs <timo.teras@iki.fi> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit 6b2672f3c9493aef3495192e113f95a7db4b65bc)
Paul Jakma [Fri, 19 Sep 2014 15:41:10 +0000 (16:41 +0100)]
ospfd: Make ospf_passive_interface_update calls friendly to static analysis
* ospf_vty.c: ({no_}ospf_passive_interface_addr_cmd) To a static analyser,
the call to ospf_passive_interface_update can look like uninitialised memory
in addr might be read from. It won't be, as ospf_passive_interface_update
only reads addr if params != IF_DEF_PARAMS, but not clear. Split up the
helper into the two cases to make it clear.
isis_pdu.c :
isisd crashes if router's own p2p hello packets get processed
thereby creating an adjacecncy with itself. Asserts at
isis_find_vertex. So discard own p2p IIH PDU and avoid
creating adjacency with self. This would also fix duplicate
systemID on an interface. These checks already exists for IS-IS
LAN Level 1/2 Hello PDU in process_lan_hello, but not for
point-to-point IIH PDUs.
Signed-off-by: Amritha Nambiar <amritha.nambiar@intel.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit 491417ac6383e2ea557951b24eb7bd3fffb69394)
Paul Jakma [Wed, 29 Oct 2014 10:33:17 +0000 (10:33 +0000)]
gdb: Add a directory of files with gdb macros
* gdb/: Directory to contain files with GDB macros. Organised by topic into
separate files.
* gdb/lib.txt: General OS API and Quagga lib macros:
(def_ntohs) convert big-endian short to host order.
(def_ntohl) convert big-endian long to host order.
(walk_route_table_next) Walk to next route_node in a table, according
to given top and current node arguments.
(walk_route_table) walk the given route table dumping non-null info pointers,
from the given root node.
(dump_timeval) timeval to human readable output
(dump_s_addr) Print IP address of given pointer to a (struct in_addr).s_addr
(dump_s6_addr) Ditto for IPv6.
(dump_prefix4) Dump a Quagga (struct prefix_ipv4 *)
(dump_prefix6) Dump (struct prefix_ipv6 *)
(dump_prefix) Dump a (struct prefix *).
(rn_next_{down,up}) left-down and up-and-right walks of a route_table
from a given route_node.
* gdb/ospfd.txt: ospfd specific gdb macros, depends on gdb/lib.txt
(dump_ospf_lsa_flags) LSA flags to text.
(dump_ospf_lsa_data) dump the data of a (struct lsa_header *) argument.
(dump_ospf_lsa) Dump the details of a (struct ospf_lsa *)
(walk_ospf_lsdb) Go through an LSDB, rooted at the
given (struct route_node *), and dump LSA details.
(ospf_backbone_lsdb_top) Get the LSDB top pointer for the given LSA type.
David Lamparter [Tue, 3 Mar 2015 12:54:30 +0000 (13:54 +0100)]
bgpd: fix SNMP write support
This code - dating back to the initial import in 2002 - probably never
worked. Calling asn_parse_int seems to always have been wrong, and in
the meantime, there no longer is a "struct variable *" argument for
write_method. If anyone tried to use it, it'd probably have crashed.
(I didn't try.)
Fix this up so it actually works. It's the only place in Quagga where a
SNMP write is actually supported, so it's an odd one out anyway, but
heh.
David Lamparter [Tue, 3 Mar 2015 07:56:48 +0000 (08:56 +0100)]
lib: silence type range warning in macro
While splitting up the CLI input macro is a bit annoying, this seems to
be the least annoying way to get rid of the "< 0" comparison warning for
unsigned long.
David Lamparter [Tue, 3 Mar 2015 20:04:20 +0000 (21:04 +0100)]
zebra: use SA_SIZE for RT_ROUNDUP on FreeBSD
FreeBSD provides SA_SIZE (and none of the other options to infer padded
size of a struct sockaddr). Just define SAROUNDUP to SA_SIZE if it is
available.
This also drops a superfluous-looking extra macro branch which would
require ROUNDUP. It seemed redundant to my eyes, but I have no idea
what odd things might have triggered addition of this in the first
place...
David Lamparter [Fri, 10 Apr 2015 07:14:30 +0000 (09:14 +0200)]
zebra, isisd: cast to unsigned char for ctypes
ctype.h macros take int as arguments, but expect arguments to be in
unsigned char's range. Even though it probably works, this isn't
correct on systems that have a signed char type. Cast explicitly.
David Lamparter [Sun, 19 Apr 2015 12:40:02 +0000 (14:40 +0200)]
bgpd: random() returns long
bgpd was using unsigned to store a probability value to be used with
random(). That, however, returns long, running into some warnings (and
worst case, if RAND_MAX > UINT_MAX, won't work correctly.
Greg Troxel [Mon, 23 Mar 2015 19:16:29 +0000 (15:16 -0400)]
Fix alignment assumptions on non-RT_ROUNDUP platforms.
The comment said that apple uses int and BSD traditionally used long,
but the code was backwards. This fixes apple to be int, and otherwise
long. That should make FreeBSD, which aligns to long, work correctly,
even without using SA_SIZE.
David Lamparter [Sat, 7 Mar 2015 07:40:56 +0000 (08:40 +0100)]
build: list actual release procedure
As in a few other places in HACKING.tex, the text doesn't quite reflect
reality. Add the actual release procedure including a few more steps,
and warn about autoconf's subdirectory behaviour.
Brian Bennett [Tue, 17 Feb 2015 23:26:12 +0000 (23:26 +0000)]
solaris: fix SMF manifest dependency model and start method
Resolves an issue where quagga daemons restart in an infinite loop.
Quagga daemons declare a dependency on zebra that requires a restart
of the daemon when zebra restarts and they explicitly restart zebra,
which again triggers their own restart.
Restarting zebra when other daemons are started is explicitly removed,
leaving dependency management up to SMF rather than handling it in the
start method.
solaris/quagga.init.in: Remove calls to routeadm_zebra_enable, and the
routeadm_zebra_enable function.
solaris/quagga.xml.in: Set dependency zebra grouping to require_all.
Fixes: #818 Signed-off-by: Greg Troxel <gdt@ir.bbn.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit 75a3cf6cf69f6ab940f8421b0f79b2b1f689b904)
Brian Bennett [Tue, 17 Feb 2015 22:32:22 +0000 (22:32 +0000)]
build: Extend ip_mreq hack to DragonFlyBSD and SunOS
This extends the ip_mreq hack to DragonFlyBSD and SunOS. This has been
in pkgsrc for some time. I've cleaned up the pkgsrc patch a little and
am submitting it upstream. Credit is due to pkgsrc maintainers.
Tested on SmartOS (illumos).
Fixes: #819 Signed-off-by: Greg Troxel <gdt@ir.bbn.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit b8a893c38e97377b2a2582b1621b988e55811412)
David Lamparter [Tue, 10 Feb 2015 10:39:39 +0000 (11:39 +0100)]
build: enable AM_SILENT_RULES
This shuts up make by default (can be reversed with "make V=1" or
--disable-silent-rules). This is useful since warnings and error
messages become more visible with less noise.
Tested on Linux with GNU make and FreeBSD with system's BSD make.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org> Acked-by: Paul Jakma <paul@jakma.org>
(cherry picked from commit cc81308148271aeed2277e16885ddca7e2d5bb9b)
David Lamparter [Fri, 28 Nov 2014 07:40:58 +0000 (08:40 +0100)]
doc: fix some warnings
Signed-off-by: David Lamparter <equinox@opensourcerouting.org> Acked-by: Paul Jakma <paul@jakma.org>
(cherry picked from commit f16195c173f8e2e17ea35f143b6ffcd50c0619fb)
David Lamparter [Sat, 22 Nov 2014 18:31:44 +0000 (10:31 -0800)]
tests: remove --disable-ipv6
With --disable-ipv6 gone, the IPv6 detection logic in the tests is not
needed anymore either.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org> Acked-by: Paul Jakma <paul@jakma.org>
(cherry picked from commit 85c63b844df4a295a64f37573e0ba08a7cc63659)
David Lamparter [Sat, 28 Jun 2014 18:22:55 +0000 (20:22 +0200)]
build: remove bogus/deprecated inet_* tests
These actually break configure on FreeBSD very subtly, because inet_aton
and __inet_aton are both detected, and then later other tests get
warnings about HAVE_INET_ATON being defined twice.
That said, they're incorrect to begin with since they detect alternative
functions but there is nothing in place to actually use these
alternates.
Signed-off-by: David Lamparter <equinox@opensourcerouting.org> Acked-by: Greg Troxel <gdt@ir.bbn.com> Acked-by: Feng Lu <lu.feng@6wind.com> Acked-by: Paul Jakma <paul@jakma.org>
(cherry picked from commit 79f74962d20fa2c90df5a57335fc3b5e19bfeccf)
Amritha Nambiar [Wed, 28 Jan 2015 18:09:30 +0000 (18:09 +0000)]
isisd: match adjacency with source of hellos
isis_pdu.c: match adjacency with source of hellos,
check for source ID on receiving hello
If an adjacency exists, check the adjacency is with the
same router as the source of the hellos. In case a mismatch
is detected, bring down the adjacency and let the next
hellos trigger creating the new adjacency.
Signed-off-by: Amritha Nambiar <amritha.nambiar@intel.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit 3c28aaf437d8d473adb89c5e74574a61a9ea7cc6)
Lu Feng [Thu, 8 Jan 2015 01:21:02 +0000 (01:21 +0000)]
isisd: fix crash on changing the circuit type of a passive interface
Signed-off-by: Feng Lu <lu.feng@6wind.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit 92cff4f7cd7e805e6689e73e63029aaccd145eca)
Lu Feng [Thu, 8 Jan 2015 01:39:18 +0000 (01:39 +0000)]
ospfd: set O-bit in the option of all DD packets
If opaque-capability is enabled, we must set the O-bit in
the option field of all DD packets. Changing the option
field of DD packets may cause the peer to reset the state
back to ExStart.
Signed-off-by: Feng Lu <lu.feng@6wind.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit 86ce951e349fd08d1ba2c66f5f6d07756689422a)
Fix tests/aspathtest.c again, this time by including a NEXT_HOP
attribute (which is out of correct order with AS_PATH, but that doesn't
matter here.) This satisfies bgp_attr_check(), which after 1a211cb
refuses updates without nexthop attribute.
Fixes: 1a211cb ("one more fix for tightening of check for missing well-known attributes") Cc: Paul Jakma <paul@opensourcerouting.org> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit 143637198e333f0c822766b38f9d8cfe75c04e21)
Olivier Dugeon [Mon, 3 Nov 2014 13:59:06 +0000 (14:59 +0100)]
ospfd: Fix initial Opaque LSA DB synchronisation
ospfd has issues resynchronising its Opaque LSA DB with neighbours after restart
or interface events. The problem comes from opaque_lsa.c code that blocks
subsequent opaque LSA flooding until the neighbour router acknowledge that, and
removes the old opaque LSA from its LSDB. The bug comes from the fact that the
lock is never release, thus avoiding subsequent opaque LSA flooding.
More detail about the bugs and its solution is describeid in file
doc/te-link-params.md
LISTNODE_DETACH doesn't clear out the node, and LISTNODE_ATTACH doesn't
set ->next (since it assumes a fresh/zeroed listnode). As a result, the
new listnode_move_to_tail() created a nice circular list, in turn
crashing ospfd in ospf_write() later.
Reported-by: Martin Winter <mwinter@netdef.org> Fixes: 6d83113 ("ospfd: Tweak previous iface RR write patch to avoid free/malloc & redundant log") Cc: Paul Jakma <paul@opensourcerouting.org> Signed-off-by: David Lamparter <equinox@opensourcerouting.org> Acked-by: Greg Troxel <gdt@ir.bbn.com> Acked-by: Dinesh Dutt <ddutt@cumulusnetworks.com> Acked-by: Vincent JARDIN <vincent.jardin@6wind.com>
(cherry picked from commit 1c6db0d2da34044ddfb42665fda8a3387ecc451d)
David Lamparter [Mon, 8 Dec 2014 16:42:12 +0000 (17:42 +0100)]
bgpd: set BGP_ATTR_MP_[UN]REACH_NLRI (fixes 1a211cb)
Unfortunately, the attribute present bits for MP_REACH and MP_UNREACH
which 1a211cb ("bgpd: one more fix"...) tests for are never set in their
corresponding attribute parsing functions.
Reported-by: Martin Winter <mwinter@netdef.org> Fixes: 1a211cb "bgpd: one more fix for tightening of check for missing well-known attributes" Cc: Paul Jakma <paul@opensourcerouting.org> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit daefeb8755e194dd19a5f1910bc78d13c8147efb)
Greg Troxel [Tue, 2 Dec 2014 19:51:49 +0000 (14:51 -0500)]
zebra/kernel_socket.c: Use platform alignment
Use the platform-provided RT_ROUNDUP macro to align sockaddrs on the
routing socket, rather than using hard-coded assumptions about
alignment. Emit a warning if the OS doesn't define alignment macros.
Resolves failure of ripngd on NetBSD 6 i386, which changed alignment
to uint64_t from long.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> Acked-by: Feng Lu <lu.feng@6wind.com>
(cherry picked from commit 88d37b902bc8127379d3293b9671aa6a11479c23)
David Lamparter [Thu, 30 Oct 2014 05:42:00 +0000 (06:42 +0100)]
tests: fix tests for 055086f (well-known attr check)
Fix tests/aspathtest.c by including an ORIGIN attribute in the
testcases. After 055086f "bgpd: well-known attr check only run for
v4/uni, which could cause a crash," we're now checking for it and tests
are failing due to that.
Note that test #11 ("4b AS4_PATH w/o AS_PATH") is no longer accepted as
OK since the function now checks for the existence of an AS_PATH attr.
Fixes: 055086f ("bgpd: well-known attr check only run for v4/uni"...) Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit c68f6d9dbb9f910d3ee82e099655fff7c12ef856)
Vincent JARDIN [Mon, 27 Oct 2014 13:03:14 +0000 (13:03 +0000)]
Handy guidelines to contribute
Explain how to be a nice contributor in a handy way.
Signed-off-by: Vincent JARDIN <vincent.jardin@6wind.com> Acked-by: Paul Jakma <paul@jakma.org>
(cherry picked from commit f80ba04074f1211d857d08d6deddc41d029be1c7)
The one place this was being used in BGP is now gone,
can remove deprecated interface. Acked-by: Feng Lu <lu.feng@6wind.com>
(cherry picked from commit 3790eb0d3f0bbb24b9c6be97f547cec144ee05d1)
Yasuhiro Ohara [Thu, 17 Dec 2009 05:41:17 +0000 (05:41 +0000)]
Bug in ospf6_lsa_compare()
This fix is probably correct on 32bit systems,
but i think it will not work on 64bit systems.
sizeof(signed long) would be 8 and therefore the
cast from u_int32_t will map all the values to
non-negative part of long int.
You would like to use int (like in ospfd) and
change the type of seqnuma, seqnumb to that.
The type int32_t would be even more proper, but
sizeof(int) is 4 on relevant platforms.
Signed-off: Ondrej Zajicek <santiago@crfreenet.org> Acked-by: Feng Lu <lu.feng@6wind.com> Acked-by: Yasuhiro Ohara <yasu@jaist.ac.jp>
(cherry picked from commit bdd8cd70a042473477f9144c9cedb8dde11ba2c1)
Joakim Tjernlund [Thu, 26 Nov 2009 12:23:07 +0000 (12:23 +0000)]
ospfd: invalid MD5 auth_key?
This looks fishy in ospf_make_md5_digest()
if (list_isempty (OSPF_IF_PARAM (oi, auth_crypt)))
auth_key = (const u_int8_t *) "";
...
MD5Update(&ctx, auth_key, OSPF_AUTH_MD5_SIZE);
auth_key points to a "" string of len 1 which is a lot
smaller that OSPF_AUTH_MD5_SIZE. Is this intentional to
get some random data or just a plain bug?
Anyone using MD5 should have a closer look and decide
what to do. Acked-by: Feng Lu <lu.feng@6wind.com>
(cherry picked from commit ea2a598411cc7bd20456849e56bbc9e93c9916e7)
Paul Jakma [Thu, 9 Oct 2014 15:09:10 +0000 (16:09 +0100)]
docs: defines.texi include seems to want to be after setfilename
* quagga.texi: I'm getting warnings about stuff in defines.texi not being
defined when building quagga.info. Seems to be fixed by moving the include
of defines.texi to the end of the header. Also, the Texinfo docs suggest
setfilename must go first.
Paul Jakma [Tue, 16 Sep 2014 10:53:49 +0000 (11:53 +0100)]
Add missing GPL headers, and copyright claims that certainly apply.
* Fix (a subset of)? files with non-trivial code that are missing GPL headers.
* A few copyright claims added which I am certain apply, but which I had
missed out on the original commits.
NB: Copyright claims are not exclusive and the addition of any copyright
claim should not be read as implying a lack of any further claims, or
denying the validity of any other claims. All those with claims of
copyright over any portion of Quagga are welcome to submit them, ideally as
patches to update copyright strings in files.