OpenBSD CVS

CVS log for src/usr.sbin/ldpd/kroute.c


[BACK] Up to [local] / src / usr.sbin / ldpd

Request diff between arbitrary revisions


Default branch: MAIN


Revision 1.71 / (download) - annotate - [select for diffs], Wed Mar 8 04:43:13 2023 UTC (14 months, 3 weeks ago) by guenther
Branch: MAIN
CVS Tags: OPENBSD_7_5_BASE, OPENBSD_7_5, OPENBSD_7_4_BASE, OPENBSD_7_4, OPENBSD_7_3_BASE, OPENBSD_7_3, HEAD
Changes since 1.70: +1 -2 lines
Diff to previous 1.70 (colored)

Delete obsolete /* ARGSUSED */ lint comments.

ok miod@ millert@

Revision 1.70 / (download) - annotate - [select for diffs], Fri Jun 28 13:32:48 2019 UTC (4 years, 11 months ago) by deraadt
Branch: MAIN
CVS Tags: OPENBSD_7_2_BASE, OPENBSD_7_2, OPENBSD_7_1_BASE, OPENBSD_7_1, OPENBSD_7_0_BASE, OPENBSD_7_0, OPENBSD_6_9_BASE, OPENBSD_6_9, OPENBSD_6_8_BASE, OPENBSD_6_8, OPENBSD_6_7_BASE, OPENBSD_6_7, OPENBSD_6_6_BASE, OPENBSD_6_6
Changes since 1.69: +3 -3 lines
Diff to previous 1.69 (colored)

When system calls indicate an error they return -1, not some arbitrary
value < 0.  errno is only updated in this case.  Change all (most?)
callers of syscalls to follow this better, and let's see if this strictness
helps us in the future.

Revision 1.69 / (download) - annotate - [select for diffs], Wed Jan 23 08:43:45 2019 UTC (5 years, 4 months ago) by dlg
Branch: MAIN
CVS Tags: OPENBSD_6_5_BASE, OPENBSD_6_5
Changes since 1.68: +30 -7 lines
Diff to previous 1.68 (colored)

teach ldpd to ask if a potential pseudowire interface can do pwe3

this makes ldpd open the ioctl socket early so the config parser
can run the SIOCGPWE3 ioctl against the requested interface.

ok claudio@

Revision 1.68 / (download) - annotate - [select for diffs], Tue Jan 22 09:25:29 2019 UTC (5 years, 4 months ago) by krw
Branch: MAIN
Changes since 1.67: +2 -2 lines
Diff to previous 1.67 (colored)

PF_ROUTE -> AF_ROUTE in the scattered sock()/setsockopt() calls
where the "wrong" #define was used.

ok dlg@

Revision 1.67 / (download) - annotate - [select for diffs], Wed Jan 3 19:39:07 2018 UTC (6 years, 4 months ago) by denis
Branch: MAIN
CVS Tags: OPENBSD_6_4_BASE, OPENBSD_6_4, OPENBSD_6_3_BASE, OPENBSD_6_3
Changes since 1.66: +146 -7 lines
Diff to previous 1.66 (colored)

Add support for IPv6 over MPLS pseudowire aka mpw(4)

OK claudio@ jca@

Revision 1.66 / (download) - annotate - [select for diffs], Mon Jul 24 11:00:01 2017 UTC (6 years, 10 months ago) by friehm
Branch: MAIN
CVS Tags: OPENBSD_6_2_BASE, OPENBSD_6_2
Changes since 1.65: +3 -3 lines
Diff to previous 1.65 (colored)

Unify ROUNDUP macros for parsing route messages.
Use the macro from route(8) / ospf6d(8) since it works also with argument 0.

OK claudio@

Revision 1.65 / (download) - annotate - [select for diffs], Sat Mar 4 00:21:48 2017 UTC (7 years, 3 months ago) by renato
Branch: MAIN
CVS Tags: OPENBSD_6_1_BASE, OPENBSD_6_1
Changes since 1.64: +4 -1 lines
Diff to previous 1.64 (colored)

Send VPLS MAC withdrawals.

RFC 4762 says that MAC address withdrawal messages can be used to
improve convergence time in VPLS networks. This patch makes ldpd send
MAC withdrawals whenever a non-pseudowire interface pertaining to a
VPLS goes down. The processing of received MAC withdrawals will be
implemented later.

Revision 1.64 / (download) - annotate - [select for diffs], Fri Mar 3 23:41:27 2017 UTC (7 years, 3 months ago) by renato
Branch: MAIN
Changes since 1.63: +5 -5 lines
Diff to previous 1.63 (colored)

Minor tweaks.

Revision 1.63 / (download) - annotate - [select for diffs], Fri Mar 3 23:36:06 2017 UTC (7 years, 3 months ago) by renato
Branch: MAIN
Changes since 1.62: +11 -4 lines
Diff to previous 1.62 (colored)

Allow to run on a non-default rdomain.

OK claudio@

Revision 1.62 / (download) - annotate - [select for diffs], Fri Jan 20 12:19:18 2017 UTC (7 years, 4 months ago) by benno
Branch: MAIN
Changes since 1.61: +1 -2 lines
Diff to previous 1.61 (colored)

work on making log.c similar in all daemons:

move daemon-local functions into new logmsg.c, and reduce
the (mostly whitespace) differences so that log.c's can be diffed easily.

removal of log_rtmsg() aproved by claudio@

ok claudio@ krw@

Revision 1.61 / (download) - annotate - [select for diffs], Sat Jun 18 01:25:53 2016 UTC (7 years, 11 months ago) by renato
Branch: MAIN
CVS Tags: OPENBSD_6_0_BASE, OPENBSD_6_0
Changes since 1.60: +3 -3 lines
Diff to previous 1.60 (colored)

Fix small LIB<->LFIB synchronization issue.

ldpd operates only with the best routes of each IP prefix. In other words,
the routes with the lowest priorities.

When a route with a better priority is detected (possibly with a different
nexthop), we should uninstall the labels from the "old" routes and try
to install a new label for the new route (if there's one available in
the LIB).

In this specific case, ldpd was failing to uninstall the labels from the
old routes because it wasn't keeping track of each route's priority in
lde. With this missing bit of information, the parent process had no way
to get the correct label to uninstall when processing a IMSG_KLABEL_DELETE
message.

Revision 1.60 / (download) - annotate - [select for diffs], Mon May 23 19:14:03 2016 UTC (8 years ago) by renato
Branch: MAIN
Changes since 1.59: +2 -1 lines
Diff to previous 1.59 (colored)

Update copyright information.

Revision 1.59 / (download) - annotate - [select for diffs], Mon May 23 19:11:42 2016 UTC (8 years ago) by renato
Branch: MAIN
Changes since 1.58: +1 -9 lines
Diff to previous 1.58 (colored)

Remove superfluous includes.

Revision 1.58 / (download) - annotate - [select for diffs], Mon May 23 19:09:25 2016 UTC (8 years ago) by renato
Branch: MAIN
Changes since 1.57: +84 -82 lines
Diff to previous 1.57 (colored)

Make functions and variables static whenever possible.

The benefits of this include:
* clean up of the ldpd global namespace;
* improved readability;
* more hints to the compiler/linker to generate more efficient code.

Whenever possible, move global static variables to a smaller scope
(function).

All extern variables are now declared in header files to avoid unnecessary
duplication.

This patch also cleans up the indentation of all function prototypes
and global variables.

Revision 1.57 / (download) - annotate - [select for diffs], Mon May 23 18:58:48 2016 UTC (8 years ago) by renato
Branch: MAIN
Changes since 1.56: +448 -285 lines
Diff to previous 1.56 (colored)

Add support for IPv6 (RFC 7552).

This includes:
* Full compliance to RFC 7552;
* Support for MD5 on LDPov6 sessions;
* Support for pseudowires over IPv6 LSPs (we're probably the world's
  first implementation doing this);
* Support for the IPv6 explicit-null label;
* Knob to specify the prefered address-family for TCP transport
  connections;
* Knob to use cisco non-compliant format to send and interpret the
  Dual-Stack capability TLV.

Revision 1.56 / (download) - annotate - [select for diffs], Mon May 23 18:55:21 2016 UTC (8 years ago) by renato
Branch: MAIN
Changes since 1.55: +106 -125 lines
Diff to previous 1.55 (colored)

Assorted fixes and small cleanup.

Nothing really interesting here.

Revision 1.55 / (download) - annotate - [select for diffs], Mon May 23 18:40:15 2016 UTC (8 years ago) by renato
Branch: MAIN
Changes since 1.54: +5 -2 lines
Diff to previous 1.54 (colored)

Several fixes in the config reload handling.

Revision 1.54 / (download) - annotate - [select for diffs], Mon May 23 18:28:22 2016 UTC (8 years ago) by renato
Branch: MAIN
Changes since 1.53: +15 -16 lines
Diff to previous 1.53 (colored)

Copy structs by assignment instead of memcpy.

Copying by straight assignment is shorter, easier to read and has a
higher level of abstraction. We'll only avoid it when copying from an
unaligned source (e.g., network buffers).

In addition, copy in_addr structs directly.

Revision 1.53 / (download) - annotate - [select for diffs], Mon May 23 17:43:42 2016 UTC (8 years ago) by renato
Branch: MAIN
Changes since 1.52: +78 -53 lines
Diff to previous 1.52 (colored)

Fix mess caused by my commit script.

I screwed up everything... trying to fix now.

Revision 1.52 / (download) - annotate - [select for diffs], Mon May 23 16:20:59 2016 UTC (8 years ago) by renato
Branch: MAIN
Changes since 1.51: +3 -3 lines
Diff to previous 1.51 (colored)

Standardize some log messages and fix some inconsistencies.

We were using several different names for the same thing in our log
messages: neighbor, neighbor ID, nbr ID and LSR ID.

Standardize to always use "lsr-id" to refer to a neighbor.

Also:
* Use log_warnx() instead of log_warn() when appropriate;
* Use fatal(x) instead of err(x) when appropriate;
* Fix some inconsistent log messages.

Revision 1.51 / (download) - annotate - [select for diffs], Mon May 23 16:14:36 2016 UTC (8 years ago) by renato
Branch: MAIN
Changes since 1.50: +2 -2 lines
Diff to previous 1.50 (colored)

More renaming.

Rename a few more things to improve readability.

* s/F_PW_CONTROLWORD_CONF/F_PW_CWORD_CONF/ (shorter)
* s/F_PW_CONTROLWORD/F_PW_CWORD/ (shorter)
* s/LDPD_FLAG_*/F_LDPD_*/ (consistency)
* s/lde_nbr_address/lde_addr/ (shorter)
* s/ldp_discovery_socket/ldp_disc_socket/ (shorter)
* s/ldp_ediscovery_socket/ldp_edisc_socket/ (shorter)
* s/ldp_sendboth/main_imsg_compose_both/ (consistency)
* s/cons/total/ (makes more sense)
* s/kaddr/ka/ (consistency with remaining code)
* Always use 'ln' for lde_nbrs (consistency)

Revision 1.50 / (download) - annotate - [select for diffs], Mon May 23 15:38:58 2016 UTC (8 years ago) by renato
Branch: MAIN
Changes since 1.49: +5 -1 lines
Diff to previous 1.49 (colored)

Filter our RTM_GET messages which are not from us.

Pulled from ospfd. Original author: claudio@

Revision 1.49 / (download) - annotate - [select for diffs], Mon May 23 15:16:16 2016 UTC (8 years ago) by renato
Branch: MAIN
Changes since 1.48: +2 -2 lines
Diff to previous 1.48 (colored)

Don't try to install pseudowires of unknown type.

Revision 1.48 / (download) - annotate - [select for diffs], Mon May 23 15:14:07 2016 UTC (8 years ago) by renato
Branch: MAIN
Changes since 1.47: +31 -29 lines
Diff to previous 1.47 (colored)

Replace manually written function names with __func__.

Revision 1.47 / (download) - annotate - [select for diffs], Sun Sep 27 17:30:38 2015 UTC (8 years, 8 months ago) by stsp
Branch: MAIN
CVS Tags: OPENBSD_5_9_BASE, OPENBSD_5_9
Changes since 1.46: +2 -2 lines
Diff to previous 1.46 (colored)

As done for bgpd recently, rename if_mediatype to if_type in ldpd.
And some ifmedia64 fixes.
"move forward" deraadt@

Revision 1.46 / (download) - annotate - [select for diffs], Tue Jul 21 04:52:29 2015 UTC (8 years, 10 months ago) by renato
Branch: MAIN
CVS Tags: OPENBSD_5_8_BASE, OPENBSD_5_8
Changes since 1.45: +114 -1 lines
Diff to previous 1.45 (colored)

VPLS signaling support.

This patch introduces full support for pseudowire signaling in ldpd(8),
including Control Word and Status TLV negotiation.

As of now it's not possible to configure a VPWS, but the signaling is
the same. In the future, when VPWS support is available in the kernel,
ldpd(8) can be extended to support VPWS with only a few modifications.

Limitations:
* No support for FEC 129, only FEC 128 (more widely deployed);
* No support for group withdraws (not widely deployed);
* No support for MAC withdraws (not widely deployed).

Related RFCs:
* RFC 3916: Requirements for Pseudo-Wire Emulation Edge-to-Edge (PWE3)
* RFC 3985: Pseudo Wire Emulation Edge-to-Edge (PWE3) Architecture
* RFC 4385: Pseudowire Emulation Edge-to-Edge (PWE3) Control Word for
  Use over an MPLS PSN
* RFC 4446: IANA Allocations for Pseudowire Edge to Edge Emulation (PWE3)
* RFC 4447: Pseudowire Setup and Maintenance Using the Label Distribution
  Protocol (LDP)
* RFC 4448: Encapsulation Methods for Transport of Ethernet over MPLS
  Networks
* RFC 4905: Encapsulation Methods for Transport of Layer 2 Frames over
  MPLS Networks
* RFC 4906: Transport of Layer 2 Frames Over MPLS

ok claudio@

Revision 1.45 / (download) - annotate - [select for diffs], Tue Jul 21 04:43:28 2015 UTC (8 years, 10 months ago) by renato
Branch: MAIN
Changes since 1.44: +1 -7 lines
Diff to previous 1.44 (colored)

Add configuration reload support.

ok claudio@

Revision 1.44 / (download) - annotate - [select for diffs], Tue Jul 21 04:39:28 2015 UTC (8 years, 10 months ago) by renato
Branch: MAIN
Changes since 1.43: +1 -4 lines
Diff to previous 1.43 (colored)

Improve handling of addresses on ldpe.

This is a preliminary work for the the next patch (sigup config
reload). We want to make sure that the ldpe process can handle duplicated
addresses.

The idea is to alloc two different if_addr structures for each address,
and link one in the global list of addresses (used to send address
messages) and link the other to the associated interface list of
addresses.

Doing that we will be able to call kif_redistribute() after reloading
the config file and activate the new LDP enabled interfaces.

NOTE: Interfaces are created at config parse time and the child
processes inherit them on fork() so there's no need to send a status
update at startup.

ok claudio@

Revision 1.43 / (download) - annotate - [select for diffs], Sun Jul 19 18:27:59 2015 UTC (8 years, 10 months ago) by renato
Branch: MAIN
Changes since 1.42: +317 -263 lines
Diff to previous 1.42 (colored)

Rework kroute.c to send only the best routes to lde.

This is major rework of the kroute.c code. The idea is remove complexity
from the lde process by making kroute.c advertise only the lowest priority
routes of each prefix.

kroute.c now keeps track of all routes using three different structures:
kroute_prefix, kroute_priority and kroute_node.

kroute_prefix represents a prefix and contains an ordered list of
priorities (kroute_priority) and for each priority there is a list of
nexthops (kroute_node). Arranging the routes using these three structures
allows for the writing of a simpler code, easier to understand.

Whenever a route is removed, if there's another route for the same prefix,
but with a lower priority, this route is immediately sent to lde.

Additional fixes:
* On RTM_CHANGE, remove the old route before installing the new one;
* On IMSG_CTL_KROUTE_ADDR, show all nexthops for multpath routes;

Revision 1.42 / (download) - annotate - [select for diffs], Fri Jul 17 21:26:05 2015 UTC (8 years, 10 months ago) by claudio
Branch: MAIN
Changes since 1.41: +11 -2 lines
Diff to previous 1.41 (colored)

Filter routes based on RTF_LLINFO and RTF_BROADCAST flags and use RTF_CONNECTED
to properly track connected routes on -current.

Revision 1.41 / (download) - annotate - [select for diffs], Sat Apr 4 16:21:48 2015 UTC (9 years, 2 months ago) by renato
Branch: MAIN
Changes since 1.40: +1 -27 lines
Diff to previous 1.40 (colored)

Remove lo protection.

There's no need to protect the 127/8 network on ldpd since this network
is filtered before being sent to lde.

If we receive a label mapping for this network, it won't be installed
because lde has no nexthop for it, and thus the code will always fall
into the LMp.13 case of the RFC "Receive Label Mapping" algorithm:
the mapping will be recorded but not used.

ok claudio@

Revision 1.40 / (download) - annotate - [select for diffs], Sat Mar 21 18:34:01 2015 UTC (9 years, 2 months ago) by renato
Branch: MAIN
Changes since 1.39: +1 -3 lines
Diff to previous 1.39 (colored)

Remove unused variables and functions.

Revision 1.39 / (download) - annotate - [select for diffs], Sat Mar 21 18:32:01 2015 UTC (9 years, 2 months ago) by renato
Branch: MAIN
Changes since 1.38: +7 -8 lines
Diff to previous 1.38 (colored)

Remove interface finite state machine.

In the name of simplicity, remove the interface FSM that was inherited
from ospfd. In ldpd interfaces are just up or down, so keeping a
FSM for that is an overkill. Now instead of calling if_fsm(), just
call if_update() whenever a relevant event occurs (status change,
address addition/removal).

Additional notes:
1 - s/if_act_/if_/

2 - Remove the IMSG_IFUP and IMSG_IFDOWN events. Now whenever an
interface changes its state a IMSG_IFSTATUS event will be generated
with the new status.

kroute.c ldpd.h ldpe.c ldpe.h CVS:
----------------------------------------------------------------------

Revision 1.38 / (download) - annotate - [select for diffs], Sat Mar 21 18:20:19 2015 UTC (9 years, 2 months ago) by renato
Branch: MAIN
Changes since 1.37: +5 -1 lines
Diff to previous 1.37 (colored)

ldpd: Don't assign labels for BGP routes.

Although RFC 5036 is not explicit about this, LDP should not assign
labels for BGP routes. Doing that would be very resource consuming
in some scenarios and unnecessary. The goal is generally only to
establish LSPs among all PEs in the AS since LDP is not used as an
end in itself but as a means to implement advanced solutions like
MPLS L2/L3 VPNs. Some implementations (e.g. JunOS) go further and
only assign labels for /32 loopback routes advertised in the IGP.

If Inter-AS LSPs are necessary, BGP itself should be used for
distributing IPv4 labeled routes (e.g. option C. of section 10 in
RFC 4364).

Revision 1.37 / (download) - annotate - [select for diffs], Wed Feb 11 05:56:51 2015 UTC (9 years, 3 months ago) by claudio
Branch: MAIN
CVS Tags: OPENBSD_5_7_BASE, OPENBSD_5_7
Changes since 1.36: +2 -2 lines
Diff to previous 1.36 (colored)

Use sizeof(u_short) in the first check since there are RT messages that
are less then sizeof(*rtm) bytes long (e.g. interface announcements).
Found the hard way by phessler@

Revision 1.36 / (download) - annotate - [select for diffs], Tue Feb 10 08:25:51 2015 UTC (9 years, 3 months ago) by claudio
Branch: MAIN
Changes since 1.35: +9 -5 lines
Diff to previous 1.35 (colored)

Sync kroute code with bgpd/ospfd code regarding EAGAIN and short reads

Revision 1.35 / (download) - annotate - [select for diffs], Tue Feb 10 01:03:54 2015 UTC (9 years, 3 months ago) by claudio
Branch: MAIN
Changes since 1.34: +3 -2 lines
Diff to previous 1.34 (colored)

Pass SOCK_NONBLOCK | SOCK_CLOEXEC to some more sockets. We never want to
sleep on a socket.

Revision 1.34 / (download) - annotate - [select for diffs], Fri Jan 16 06:40:17 2015 UTC (9 years, 4 months ago) by deraadt
Branch: MAIN
Changes since 1.33: +2 -2 lines
Diff to previous 1.33 (colored)

Replace <sys/param.h> with <limits.h> and other less dirty headers where
possible.  Annotate <sys/param.h> lines with their current reasons.  Switch
to PATH_MAX, NGROUPS_MAX, HOST_NAME_MAX+1, LOGIN_NAME_MAX, etc.  Change
MIN() and MAX() to local definitions of MINIMUM() and MAXIMUM() where
sensible to avoid pulling in the pollution.  These are the files confirmed
through binary verification.
ok guenther, millert, doug (helped with the verification protocol)

Revision 1.33 / (download) - annotate - [select for diffs], Mon Jun 23 03:46:17 2014 UTC (9 years, 11 months ago) by guenther
Branch: MAIN
CVS Tags: OPENBSD_5_6_BASE, OPENBSD_5_6
Changes since 1.32: +3 -3 lines
Diff to previous 1.32 (colored)

The second level of the CTL_NET sysctl is a PF_*, not an AF_*

inconsistent usage in route(8) noted by Gregor Best (gbe (at) ring0.de)

Revision 1.32 / (download) - annotate - [select for diffs], Wed Oct 30 17:24:34 2013 UTC (10 years, 7 months ago) by deraadt
Branch: MAIN
CVS Tags: OPENBSD_5_5_BASE, OPENBSD_5_5
Changes since 1.31: +3 -3 lines
Diff to previous 1.31 (colored)

another simple %i to %d conversion for obviousness

Revision 1.31 / (download) - annotate - [select for diffs], Tue Oct 15 21:54:19 2013 UTC (10 years, 7 months ago) by renato
Branch: MAIN
Changes since 1.30: +4 -3 lines
Diff to previous 1.30 (colored)

Don't bind a label for the default route.

After discussing with claudio@ we came to the conclusion that it's
more safe to ignore the default route and don't bind a label for
it.
OK @claudio

Revision 1.30 / (download) - annotate - [select for diffs], Tue Oct 15 20:21:25 2013 UTC (10 years, 7 months ago) by renato
Branch: MAIN
Changes since 1.29: +3 -4 lines
Diff to previous 1.29 (colored)

Fix whitespace and other style issues.
OK claudio@

Revision 1.29 / (download) - annotate - [select for diffs], Tue Jun 4 00:41:18 2013 UTC (11 years ago) by claudio
Branch: MAIN
CVS Tags: OPENBSD_5_4_BASE, OPENBSD_5_4
Changes since 1.28: +4 -4 lines
Diff to previous 1.28 (colored)

fix some minor issues before proceeding with the remaining patches from
Renato Westphal. Diff by Renato Westphal

Revision 1.28 / (download) - annotate - [select for diffs], Mon Jun 3 16:56:47 2013 UTC (11 years ago) by claudio
Branch: MAIN
Changes since 1.27: +5 -1 lines
Diff to previous 1.27 (colored)

Advertise the implicit-null label for routes attached to loopback
interfaces to guarantee PHP. With this 'fib-update no' is not totaly
broken because of missing mappings for the loopbacks.
Diff by Renato Westphal

Revision 1.27 / (download) - annotate - [select for diffs], Mon Jun 3 16:53:49 2013 UTC (11 years ago) by claudio
Branch: MAIN
Changes since 1.26: +78 -31 lines
Diff to previous 1.26 (colored)

Implement support for multiple addresses per interface.
This replaces the way addresses and interface are chained together.
In ospfd there was a 1 to 1 mapping (with iface clones) but LDP does
not have that limitation.
Diff from Renato Westphal

Revision 1.26 / (download) - annotate - [select for diffs], Sat Jun 1 20:13:04 2013 UTC (11 years ago) by claudio
Branch: MAIN
Changes since 1.25: +14 -2 lines
Diff to previous 1.25 (colored)

Filter out route messages we don't need and log kernel messages in
super verbose mode.
From Renato Westphal

Revision 1.25 / (download) - annotate - [select for diffs], Sun Jun 26 19:19:23 2011 UTC (12 years, 11 months ago) by claudio
Branch: MAIN
CVS Tags: OPENBSD_5_3_BASE, OPENBSD_5_3, OPENBSD_5_2_BASE, OPENBSD_5_2, OPENBSD_5_1_BASE, OPENBSD_5_1, OPENBSD_5_0_BASE, OPENBSD_5_0
Changes since 1.24: +1 -21 lines
Diff to previous 1.24 (colored)

Remove obsolete mcast routes in ldpd and ripd.
OK dlg@

Revision 1.24 / (download) - annotate - [select for diffs], Wed Oct 20 12:16:41 2010 UTC (13 years, 7 months ago) by claudio
Branch: MAIN
CVS Tags: OPENBSD_4_9_BASE, OPENBSD_4_9
Changes since 1.23: +2 -1 lines
Diff to previous 1.23 (colored)

Since on shutdown fib_sync is forced to 1 to remove the multicast route
it needs to be set to 0 afterwards again, because the FIB was decoupled
right before and now no "route vanished before delete" messages are
printed on shutdown.

Revision 1.23 / (download) - annotate - [select for diffs], Fri Oct 15 13:18:45 2010 UTC (13 years, 7 months ago) by claudio
Branch: MAIN
Changes since 1.22: +94 -107 lines
Diff to previous 1.22 (colored)

Rework the kroute framework of ldpd. ldpd is different from the other
routing daemons. Change the way the kroute tree is indexed (by FEC with
a linked list in case there is a priority conflict -- same route + nexthop
at different priorities). This needs a mpath capable MPLS routing table.
Still work in progress but works a lot better in close meshed networks.

Revision 1.22 / (download) - annotate - [select for diffs], Thu Oct 7 12:38:00 2010 UTC (13 years, 7 months ago) by claudio
Branch: MAIN
Changes since 1.21: +4 -19 lines
Diff to previous 1.21 (colored)

Don't try to add MPLS routes with a incomming MPLS_LABEL_IMPLNULL label.
The kernel has now a static entry for them and they should not hit the
wire anyway.

Revision 1.21 / (download) - annotate - [select for diffs], Wed Sep 1 13:54:54 2010 UTC (13 years, 9 months ago) by claudio
Branch: MAIN
Changes since 1.20: +4 -4 lines
Diff to previous 1.20 (colored)

s/lfib/fib/ for more consitency with the other routing daemons.
This started manly because of ldpctl beeing inconsistent and me misstyping
lfib almost every time.
OK michele@

Revision 1.20 / (download) - annotate - [select for diffs], Mon Jul 12 14:35:13 2010 UTC (13 years, 10 months ago) by bluhm
Branch: MAIN
CVS Tags: OPENBSD_4_8_BASE, OPENBSD_4_8
Changes since 1.19: +6 -16 lines
Diff to previous 1.19 (colored)

Merge duplicate log messages into one log_warn().
ok claudio@

Revision 1.19 / (download) - annotate - [select for diffs], Thu Jul 8 09:41:05 2010 UTC (13 years, 10 months ago) by claudio
Branch: MAIN
Changes since 1.18: +6 -77 lines
Diff to previous 1.18 (colored)

Kill more code in kroute.c that is unneeded in ldpd. ldpd is a bit strange
since it does not care that much about reachability of routes. The idea is
to have diverse LSP in the kernel and the kernel should then decide which
path should be used.
OK michele@

Revision 1.18 / (download) - annotate - [select for diffs], Wed Jun 30 05:27:56 2010 UTC (13 years, 11 months ago) by claudio
Branch: MAIN
Changes since 1.17: +8 -13 lines
Diff to previous 1.17 (colored)

Pass a struct kroute and not a kroute_node to kr_redist_remove(). This
allows kr_redist_eval() to call kr_redist_remove(0 instead of hand rolling
the same code.

Revision 1.17 / (download) - annotate - [select for diffs], Wed Jun 30 05:21:38 2010 UTC (13 years, 11 months ago) by claudio
Branch: MAIN
Changes since 1.16: +2 -33 lines
Diff to previous 1.16 (colored)

Kill IMSG_KLABEL_INSERT and all the related functions around it.
IMSG_KLABEL_CHANGE is smart enough to know when something is a change
or an insert.

Revision 1.16 / (download) - annotate - [select for diffs], Wed Jun 30 05:07:09 2010 UTC (13 years, 11 months ago) by claudio
Branch: MAIN
Changes since 1.15: +10 -22 lines
Diff to previous 1.15 (colored)

Rework how we "redistribute" networks. Send all pathes of an active route
to the lde so we can assign remote labels to all of those pathes.

Revision 1.15 / (download) - annotate - [select for diffs], Wed Jun 30 02:09:22 2010 UTC (13 years, 11 months ago) by claudio
Branch: MAIN
Changes since 1.14: +156 -193 lines
Diff to previous 1.14 (colored)

Sync kroute.c code with ospfd's version of kroute.c. A small step to support
multipath routes.

Revision 1.14 / (download) - annotate - [select for diffs], Mon Jun 21 19:43:36 2010 UTC (13 years, 11 months ago) by claudio
Branch: MAIN
Changes since 1.13: +2 -2 lines
Diff to previous 1.13 (colored)

Send the right kroute struct to ldpctl for IMSG_CTL_KROUTE. This should
fix printing of multipath routes.

Revision 1.13 / (download) - annotate - [select for diffs], Mon Jun 7 13:24:23 2010 UTC (13 years, 11 months ago) by claudio
Branch: MAIN
Changes since 1.12: +9 -7 lines
Diff to previous 1.12 (colored)

Store all labels in ldpd in host byte order without any additional shifting.
Add the necessary ntohl() and shifts in various places and cleanup the byte
order mess we had before. michele@ agrees.

Revision 1.12 / (download) - annotate - [select for diffs], Tue May 25 13:29:45 2010 UTC (14 years ago) by claudio
Branch: MAIN
Changes since 1.11: +1 -35 lines
Diff to previous 1.11 (colored)

Remove another leftover from ospfd. ldpd does not have a concept of ext_tag
and so there is no need to carry ext_tag and rtlabels around.
"Yes! kill kill kill" michele@

Revision 1.11 / (download) - annotate - [select for diffs], Wed May 19 13:13:36 2010 UTC (14 years ago) by claudio
Branch: MAIN
Changes since 1.10: +4 -1 lines
Diff to previous 1.10 (colored)

Set RTF_MPLS in rtm_fmask and rtm_flags because ldpd wants to play with
the MPLS part of those routes.
OK michele@

Revision 1.10 / (download) - annotate - [select for diffs], Tue Apr 13 15:39:29 2010 UTC (14 years, 1 month ago) by michele
Branch: MAIN
Changes since 1.9: +13 -5 lines
Diff to previous 1.9 (colored)

When a prefix has a implicit null label associated, force pop operation.
This allow us to correcly do penultimate hop popping.

From Thomas Habets. Thanks.
ok claudio@

Revision 1.9 / (download) - annotate - [select for diffs], Thu Mar 25 12:05:18 2010 UTC (14 years, 2 months ago) by claudio
Branch: MAIN
Changes since 1.8: +41 -14 lines
Diff to previous 1.8 (colored)

Kroute updates from the LDE are per FEC so do the lookup in kroute with
prefix/len and nexthop but do not consider the priority. send_rtmsg() needs
to use the kroute element and not the one sent from the LDE since that one
has no priority set (which is needed). This seems to solve a problem where
ldpd modified the wrong routes. OK michele

Revision 1.8 / (download) - annotate - [select for diffs], Wed Mar 24 19:13:10 2010 UTC (14 years, 2 months ago) by claudio
Branch: MAIN
Changes since 1.7: +2 -2 lines
Diff to previous 1.7 (colored)

We need to set the rtm_priority when changing a route so that we do not
modify a possible better route instead. A bit more is still needed.
OK michele@

Revision 1.7 / (download) - annotate - [select for diffs], Wed Mar 3 10:17:05 2010 UTC (14 years, 3 months ago) by claudio
Branch: MAIN
CVS Tags: OPENBSD_4_7_BASE, OPENBSD_4_7
Changes since 1.6: +217 -249 lines
Diff to previous 1.6 (colored)

Rework the kroute code by stealing some code from ospfd and massaging it
a lot more. Main reason for this is to add priority support. Additionally
add some additional NO_LABEL fixes.
OK michele@

Revision 1.6 / (download) - annotate - [select for diffs], Fri Feb 19 12:47:29 2010 UTC (14 years, 3 months ago) by claudio
Branch: MAIN
Changes since 1.5: +1 -2 lines
Diff to previous 1.5 (colored)

Do not double free a knode when kroute_insert() fails. kroute_insert()
will free the node if something fails.
OK michele

Revision 1.5 / (download) - annotate - [select for diffs], Mon Sep 28 09:48:46 2009 UTC (14 years, 8 months ago) by michele
Branch: MAIN
Changes since 1.4: +9 -8 lines
Diff to previous 1.4 (colored)

When a route is deleted, ldpd should remove labels associated with it from
lfib (the kernel lib) but not from the lib. These could be used later on when
the route come back.

ok claudio@

Revision 1.4 / (download) - annotate - [select for diffs], Thu Aug 6 09:07:49 2009 UTC (14 years, 9 months ago) by michele
Branch: MAIN
Changes since 1.3: +13 -11 lines
Diff to previous 1.3 (colored)

ldpd must not add/delete AF_INET routes, it just have to change them
inserting/deleting MPLS infos.

ok claudio@

Revision 1.3 / (download) - annotate - [select for diffs], Mon Jul 13 19:04:26 2009 UTC (14 years, 10 months ago) by michele
Branch: MAIN
Changes since 1.2: +83 -255 lines
Diff to previous 1.2 (colored)

Get rid of the multipath code, as it is not needed.

ok claudio@ laurent@

Revision 1.2 / (download) - annotate - [select for diffs], Fri Jun 5 22:40:24 2009 UTC (14 years, 11 months ago) by chris
Branch: MAIN
CVS Tags: OPENBSD_4_6_BASE, OPENBSD_4_6
Changes since 1.1: +5 -3 lines
Diff to previous 1.1 (colored)

rtm->rtm_hdrlen conversion

ok claudio@, henning@

Revision 1.1 / (download) - annotate - [select for diffs], Mon Jun 1 20:59:45 2009 UTC (15 years ago) by michele
Branch: MAIN

Welcome ldpd, the Label Distribution Protocol daemon.
Built using the imsg/three process framework, its main aim
is to redistribute MPLS labels between peers.

Right now it has some really basic functionalities,
the basic protocol works and peers are able to exchange
labels and insert them in the kernel.
It still does not react to changes of topology.

Not yet connected to the builds.

ok claudio@ deraadt@

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.