Being started without --debug and --foreground options pimd cant determine bootstrap router so doesn't send RP advertises. The reason is that we call pid=getpid() in routesock.c and use that value later to determine the valid message from routing socket.
But between those operations we do fork() in main.c to daemonize pimd, so it gets new process ID that is different from pid. After that rtm.rtm_pid != pid becomes always true and k_req_incoming() always returns FALSE.
The patch, probably not optimal, follows.
It moves pid determinition from init_routesock() to k_req_incoming().
FreeBSD 9.2-RELEASE amd64 pimd 2.2.0-alpha1
Being started without --debug and --foreground options pimd cant determine bootstrap router so doesn't send RP advertises. The reason is that we call pid=getpid() in routesock.c and use that value later to determine the valid message from routing socket. But between those operations we do fork() in main.c to daemonize pimd, so it gets new process ID that is different from pid. After that rtm.rtm_pid != pid becomes always true and k_req_incoming() always returns FALSE.
The patch, probably not optimal, follows. It moves pid determinition from init_routesock() to k_req_incoming().