Someone else reported this same problem back in 2005 but never got a response, so I'll try again.
I've been running FreeBSD (userland ppp) on my old i486 firewall machine for several years and decided to try OpenBSD 4.3 on the same machine. I have it working well now (pppoe/DSL) except when ppp needs to change the default route e.g. when reestablishing a dropped connection. Here is ppp's log when that occurs: Jun 4 06:23:21 cyr ppp[469]: TCP/IP: route_UpdateMTU: Netif: 7 (tun0), dst 0.0.0.0/0, mtu 1492 Jun 4 06:23:21 cyr ppp[469]: ID0: 1 = socket(17, 3, 0) Jun 4 06:23:21 cyr ppp[469]: ID0: -1 = write(1, data, 120) Jun 4 06:23:21 cyr ppp[469]: TCP/IP: rt_Update failure: Jun 4 06:23:21 cyr ppp[469]: TCP/IP: rt_Update: Dst = 0.0.0.0/0 Jun 4 06:23:21 cyr ppp[469]: Warning: 0.0.0.0/0: Change route failed: errno: No such process This happens when my ISP gives me a different IP address when reconnecting. The new connection doesn't work until I use pppctl to "add! default HISADDR" manually. The ppp code responsible for changing the route is found in /usr/src/usr.sbin/ppp/ppp/route.c: s = ID0socket(PF_ROUTE, SOCK_RAW, 0); wb = ID0write(s, &rtmes, rtmes.m_rtm.rtm_msglen); if (wb < 0) { ncprange_setsa(&ncpdst, dst, mask); log_Printf(LogTCPIP, "rt_Update failure:\n"); log_Printf(LogTCPIP, "rt_Update: Dst = %s\n", ncprange_ntoa(&ncpdst)); if (rtmes.m_rtm.rtm_errno == 0) log_Printf(LogWARN, "%s: Change route failed: errno: %s\n", ncprange_ntoa(&ncpdst), strerror(errno)); So ppp writes to a socket when trying to change routes, but I don't know who is supposed to be listening at the other end, or why he is missing in action. Any ideas? Thanks!