summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--debian/patches/fix-receiver-lookups.patch234
-rw-r--r--debian/patches/series1
2 files changed, 235 insertions, 0 deletions
diff --git a/debian/patches/fix-receiver-lookups.patch b/debian/patches/fix-receiver-lookups.patch
new file mode 100644
index 00000000..f40a6c29
--- /dev/null
+++ b/debian/patches/fix-receiver-lookups.patch
@@ -0,0 +1,234 @@
+diff --git a/hurd/iioctl.defs b/hurd/iioctl.defs
+index 4efe928..dfa8903 100644
+--- a/hurd/iioctl.defs
++++ b/hurd/iioctl.defs
+@@ -20,6 +20,10 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+ #include <hurd/hurd_types.defs>
+
++#ifdef IIOCTL_IMPORTS
++IIOCTL_IMPORTS
++#endif
++
+ INTR_INTERFACE
+
+ /* Ioctl class `i'; the subsystem is derived from calculations in
+diff --git a/pfinet/Makefile b/pfinet/Makefile
+index 9bda137..10b90eb 100644
+--- a/pfinet/Makefile
++++ b/pfinet/Makefile
+@@ -141,6 +141,7 @@ asm/checksum.h: ../config.status
+
+ io-MIGSFLAGS = -imacros $(srcdir)/mig-mutate.h
+ socket-MIGSFLAGS = -imacros $(srcdir)/mig-mutate.h
++iioctl-MIGSFLAGS = -imacros $(srcdir)/mig-mutate.h
+
+ # cpp doesn't automatically make dependencies for -imacros dependencies. argh.
+ io_S.h ioServer.c socket_S.h socketServer.c: mig-mutate.h
+diff --git a/pfinet/iioctl-ops.c b/pfinet/iioctl-ops.c
+index bd876ee..f1c503d 100644
+--- a/pfinet/iioctl-ops.c
++++ b/pfinet/iioctl-ops.c
+@@ -36,8 +36,6 @@
+ #include <net/if.h>
+ #include <net/sock.h>
+
+-#include "mig-decls.h"
+-
+ extern struct notifier_block *netdev_chain;
+
+ /* devinet.c */
+@@ -76,21 +74,20 @@ enum siocgif_type
+
+ #define SIOCGIF(name, type) \
+ kern_return_t \
+- S_iioctl_siocgif##name (io_t port, \
++ S_iioctl_siocgif##name (struct sock_user *user, \
+ ifname_t ifnam, \
+ sockaddr_t *addr) \
+ { \
+- return siocgifXaddr (port, ifnam, addr, type); \
++ return siocgifXaddr (user, ifnam, addr, type); \
+ }
+
+ /* Get some sockaddr type of info. */
+ static kern_return_t
+-siocgifXaddr (io_t port,
++siocgifXaddr (struct sock_user *user,
+ ifname_t ifnam,
+ sockaddr_t *addr,
+ enum siocgif_type type)
+ {
+- struct sock_user *user = begin_using_socket_port (port);
+ error_t err = 0;
+ struct device *dev;
+ struct sockaddr_in *sin = (struct sockaddr_in *) addr;
+@@ -113,27 +110,25 @@ siocgifXaddr (io_t port,
+ }
+
+ pthread_mutex_unlock (&global_lock);
+- end_using_socket_port (user);
+ return err;
+ }
+
+ #define SIOCSIF(name, type) \
+ kern_return_t \
+- S_iioctl_siocsif##name (io_t port, \
++ S_iioctl_siocsif##name (struct sock_user *user, \
+ ifname_t ifnam, \
+ sockaddr_t addr) \
+ { \
+- return siocsifXaddr (port, ifnam, &addr, type); \
++ return siocsifXaddr (user, ifnam, &addr, type); \
+ }
+
+ /* Set some sockaddr type of info. */
+ static kern_return_t
+-siocsifXaddr (io_t port,
++siocsifXaddr (struct sock_user *user,
+ ifname_t ifnam,
+ sockaddr_t *addr,
+ enum siocgif_type type)
+ {
+- struct sock_user *user = begin_using_socket_port(port);
+ error_t err = 0;
+ struct device *dev;
+ struct sockaddr_in *sin = (struct sockaddr_in *) addr;
+@@ -160,7 +155,6 @@ siocsifXaddr (io_t port,
+ }
+
+ pthread_mutex_unlock (&global_lock);
+- end_using_socket_port (user);
+ return err;
+ }
+
+@@ -172,11 +166,10 @@ SIOCSIF (dstaddr, DSTADDR);
+
+ /* 16 SIOCSIFFLAGS -- Set flags of a network interface. */
+ kern_return_t
+-S_iioctl_siocsifflags (io_t port,
++S_iioctl_siocsifflags (struct sock_user *user,
+ ifname_t ifnam,
+ short flags)
+ {
+- struct sock_user *user = begin_using_socket_port (port);
+ error_t err = 0;
+ struct device *dev;
+
+@@ -193,13 +186,12 @@ S_iioctl_siocsifflags (io_t port,
+ err = dev_change_flags (dev, flags);
+
+ pthread_mutex_unlock (&global_lock);
+- end_using_socket_port (user);
+ return err;
+ }
+
+ /* 17 SIOCGIFFLAGS -- Get flags of a network interface. */
+ kern_return_t
+-S_iioctl_siocgifflags (io_t port,
++S_iioctl_siocgifflags (struct sock_user *user,
+ char *name,
+ short *flags)
+ {
+@@ -225,7 +217,7 @@ SIOCSIF (netmask, NETMASK);
+
+ /* 23 SIOCGIFMETRIC -- Get metric of a network interface. */
+ kern_return_t
+-S_iioctl_siocgifmetric (io_t port,
++S_iioctl_siocgifmetric (struct sock_user *user,
+ ifname_t ifnam,
+ int *metric)
+ {
+@@ -245,7 +237,7 @@ S_iioctl_siocgifmetric (io_t port,
+
+ /* 24 SIOCSIFMETRIC -- Set metric of a network interface. */
+ kern_return_t
+-S_iioctl_siocsifmetric (io_t port,
++S_iioctl_siocsifmetric (struct sock_user *user,
+ ifname_t ifnam,
+ int metric)
+ {
+@@ -254,7 +246,7 @@ S_iioctl_siocsifmetric (io_t port,
+
+ /* 25 SIOCDIFADDR -- Delete interface address. */
+ kern_return_t
+-S_iioctl_siocdifaddr (io_t port,
++S_iioctl_siocdifaddr (struct sock_user *user,
+ ifname_t ifnam,
+ sockaddr_t addr)
+ {
+@@ -275,14 +267,14 @@ SIOCGIF (netmask, NETMASK);
+
+ /* 39 SIOCGIFHWADDR -- Get the hardware address of a network interface. */
+ error_t
+-S_iioctl_siocgifhwaddr (io_t port,
++S_iioctl_siocgifhwaddr (struct sock_user *user,
+ ifname_t ifname,
+ sockaddr_t *addr)
+ {
+ error_t err = 0;
+ struct device *dev;
+
+- if (!port)
++ if (!user)
+ return EOPNOTSUPP;
+
+ dev = get_dev (ifname);
+@@ -300,7 +292,7 @@ S_iioctl_siocgifhwaddr (io_t port,
+
+ /* 51 SIOCGIFMTU -- Get mtu of a network interface. */
+ error_t
+-S_iioctl_siocgifmtu (io_t port,
++S_iioctl_siocgifmtu (struct sock_user *user,
+ ifname_t ifnam,
+ int *mtu)
+ {
+@@ -320,11 +312,10 @@ S_iioctl_siocgifmtu (io_t port,
+
+ /* 51 SIOCSIFMTU -- Set mtu of a network interface. */
+ error_t
+-S_iioctl_siocsifmtu (io_t port,
++S_iioctl_siocsifmtu (struct sock_user *user,
+ ifname_t ifnam,
+ int mtu)
+ {
+- struct sock_user *user = begin_using_socket_port (port);
+ error_t err = 0;
+ struct device *dev;
+
+@@ -350,13 +341,12 @@ S_iioctl_siocsifmtu (io_t port,
+ }
+
+ pthread_mutex_unlock (&global_lock);
+- end_using_socket_port (user);
+ return err;
+ }
+
+ /* 100 SIOCGIFINDEX -- Get index number of a network interface. */
+ error_t
+-S_iioctl_siocgifindex (io_t port,
++S_iioctl_siocgifindex (struct sock_user *user,
+ ifname_t ifnam,
+ int *index)
+ {
+@@ -376,7 +366,7 @@ S_iioctl_siocgifindex (io_t port,
+
+ /* 101 SIOCGIFNAME -- Get name of a network interface from index number. */
+ error_t
+-S_iioctl_siocgifname (io_t port,
++S_iioctl_siocgifname (struct sock_user *user,
+ ifname_t ifnam,
+ int *index)
+ {
+diff --git a/pfinet/mig-mutate.h b/pfinet/mig-mutate.h
+index b778077..0a1eeb8 100644
+--- a/pfinet/mig-mutate.h
++++ b/pfinet/mig-mutate.h
+@@ -25,6 +25,7 @@
+ #define IO_INTRAN sock_user_t begin_using_socket_port (io_t)
+ #define IO_DESTRUCTOR end_using_socket_port (sock_user_t)
+ #define IO_IMPORTS import "mig-decls.h";
++#define IIOCTL_IMPORTS import "mig-decls.h";
+
+ #define SOCKET_INTRAN sock_user_t begin_using_socket_port (socket_t)
+ #define SOCKET_DESTRUCTOR end_using_socket_port (sock_user_t)
diff --git a/debian/patches/series b/debian/patches/series
index c755083d..05c610af 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -46,3 +46,4 @@ xkb-compat.patch
xxx-fix-build.patch
+fix-receiver-lookups.patch