summaryrefslogtreecommitdiffstats
path: root/ldpd/control.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* *: unify thread/event cancel macrosMark Stapp2020-10-231-2/+2
| | | | | | | | | Replace all lib/thread cancel macros, use thread_cancel() everywhere. Only the THREAD_OFF macro and thread_cancel() api are supported. Also adjust thread_cancel_async() to NULL caller's pointer (if present). Signed-off-by: Mark Stapp <mjs@voltanet.io>
* ldpd: Adding support for LDP IGP SynchronizationKaren Schoener2020-09-091-0/+3
| | | | | Signed-off-by: Lynne Morrison <lynne@voltanet.io> Signed-off-by: Karen Schoener <karen@voltanet.io>
* *: update thread_add_* callsQuentin Young2017-05-091-2/+3
| | | | | | | | | | | | Pass pointer to pointer instead of assigning by return value. See previous commit message. To ensure that the behavior stays functionally correct, any assignments with the result of a thread_add* function have been transformed to set the pointer to null before passing it. These can be removed wherever the pointer is known to already be null. Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
* *: remove THREAD_ON macros, add nullity checkQuentin Young2017-05-091-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The way thread.c is written, a caller who wishes to be able to cancel a thread or avoid scheduling it twice must keep a reference to the thread. Typically this is done with a long lived pointer whose value is checked for null in order to know if the thread is currently scheduled. The check-and-schedule idiom is so common that several wrapper macros in thread.h existed solely to provide it. This patch removes those macros and adds a new parameter to all thread_add_* functions which is a pointer to the struct thread * to store the result of a scheduling call. If the value passed is non-null, the thread will only be scheduled if the value is null. This helps with consistency. A Coccinelle spatch has been used to transform code of the form: if (t == NULL) t = thread_add_* (...) to the form thread_add_* (..., &t) The THREAD_ON macros have also been transformed to the underlying thread.c calls. Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
* ldpd: simplify initialization of the child processesRenato Westphal2017-04-261-9/+9
| | | | | | | | | | | | | | | | | | | | In order to have separate ASLR/cookies per process, ldpd calls exec() in the child processes after fork() (this is also known as the fork+exec model). This is an important security feature but it makes the initialization of the child processes a bit more complicated as they're not a copy of the parent anymore, so all parameters given via command line are lost. To solve this problem, we were creating an argv array by hand with all necessary parameters and providing it to the exec() syscall. This works but it's a very ugly solution. This patch introduces a different approach to solve the problem: send an IMSG_INIT message to the child processes with all parameters they need in order to initialize properly. This makes adding additional initialization parameters much more convenient and less error prone. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
* ldpd: provide both a brief and a detailed version of some show commandsRenato Westphal2017-03-211-0/+3
| | | | Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
* ldpd: replace hand-rolled 'for' loop with specialized macroRenato Westphal2017-03-031-6/+8
| | | | | | | No intentional functional change. Original author: Kenneth R Westerback <krw@openbsd.org> Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
* ldpd: add ctl_socket cli option to override the compiled-in location for the ↵Renato Westphal2017-01-251-7/+7
| | | | | | control socket Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
* ldpd: adapt the code for QuaggaRenato Westphal2016-09-231-59/+37
| | | | Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
* ldpd: sun is a reserved word on SolarisRenato Westphal2016-09-231-8/+8
| | | | | | | On a SUN/Solaris system the string "sun" is a preprocessor define and can't be used for program variables. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
* ldpd: copy original sources from OpenBSD (14/09/2016)Renato Westphal2016-09-231-0/+308
Signed-off-by: Renato Westphal <renato@opensourcerouting.org>