--- /dev/null
+--- a/bcrelay.c
++++ b/bcrelay.c
+@@ -667,7 +667,7 @@ static void mainloop(int argc, char **ar
+ * there is no need to concern about the physical/link layer header because it is
+ * filled in automatically (based on the contents of sa).
+ */
+- if ((nrsent = sendto(cur_ifsnr[j].sock_nr, ipp_p, rlen, MSG_DONTWAIT|MSG_TRYHARD, (struct sockaddr *)&sa, salen)) < 0)
++ if ((nrsent = sendto(cur_ifsnr[j].sock_nr, ipp_p, rlen, MSG_DONTWAIT|MSG_DONTROUTE, (struct sockaddr *)&sa, salen)) < 0)
+ {
+ if (errno == ENETDOWN) {
+ syslog(LOG_NOTICE, "ignored ENETDOWN from sendto(), a network interface was going down?");
+--- a/compat.c
++++ b/compat.c
+@@ -11,10 +11,10 @@
+ #include "compat.h"
+ #include "our_syslog.h"
+
+-#ifndef HAVE_STRLCPY
+ #include <string.h>
+ #include <stdio.h>
+
++#ifndef HAVE_STRLCPY
+ void strlcpy(char *dst, const char *src, size_t size)
+ {
+ strncpy(dst, src, size - 1);
+--- /dev/null
++++ b/net/ppp_defs.h
+@@ -0,0 +1,10 @@
++#ifndef _NET_PPP_DEFS_H
++#define _NET_PPP_DEFS_H 1
++
++#define __need_time_t
++#include <time.h>
++
++#include <asm/types.h>
++#include <linux/ppp_defs.h>
++
++#endif /* net/ppp_defs.h */