diff options
-rw-r--r-- | hurd/iioctl.defs | 12 | ||||
-rw-r--r-- | hurd/rioctl.defs | 56 | ||||
-rw-r--r-- | lwip/Makefile | 3 | ||||
-rw-r--r-- | lwip/iioctl-ops.c | 5 | ||||
-rw-r--r-- | lwip/main.c | 2 | ||||
-rw-r--r-- | lwip/mig-mutate.h | 1 | ||||
-rw-r--r-- | pfinet/Makefile | 3 | ||||
-rw-r--r-- | pfinet/iioctl-ops.c | 4 | ||||
-rw-r--r-- | pfinet/main.c | 3 | ||||
-rw-r--r-- | pfinet/mig-mutate.h | 1 |
10 files changed, 74 insertions, 16 deletions
diff --git a/hurd/iioctl.defs b/hurd/iioctl.defs index c1007b2a..6b227899 100644 --- a/hurd/iioctl.defs +++ b/hurd/iioctl.defs @@ -47,17 +47,9 @@ skip; skip; skip; skip; /* 0 1 2 3 unused */ skip; skip; skip; skip; /* 4 5 6 7 unused */ skip; skip; /* 8 9 unused */ -/* 10 SIOCADDRT */ -routine iioctl_siocaddrt ( - reqport: io_t; - ifnam: ifname_t; - route: srtentry_t); +skip; /* 10 SIOCADDRT (rioctl) */ -/* 11 SIOCDELRT */ -routine iioctl_siocdelrt ( - reqport: io_t; - ifnam: ifname_t; - route: srtentry_t); +skip; /* 11 SIOCDELRT (rioctl) */ /* 12 SIOCSIFADDR */ routine iioctl_siocsifaddr ( diff --git a/hurd/rioctl.defs b/hurd/rioctl.defs new file mode 100644 index 00000000..595eb7c2 --- /dev/null +++ b/hurd/rioctl.defs @@ -0,0 +1,56 @@ +/* Definitions for route ioctls + Copyright (C) 2022 Free Software Foundation, Inc. + +This file is part of the GNU Hurd. + +The GNU Hurd is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +The GNU Hurd is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with the GNU Hurd; see the file COPYING. If not, write to +the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + + +#include <hurd/hurd_types.defs> + +#ifdef RIOCTL_IMPORTS +RIOCTL_IMPORTS +#endif + +INTR_INTERFACE + +/* Ioctl class `r'; the subsystem is derived from calculations in + <ioctls.h>. */ +subsystem rioctl 148000; /* XXX */ + +import <hurd/ioctl_types.h>; /* XXX */ + +/* This is the first arg for a struct ifreq_something as specified by the + definition of _IOT_ifreq_something in <net/if.h>. */ +type ifname_t = array[16] of char; /* IFNAMSIZ is 16. */ + +/* This is the struct srtentry from <net/route.h>. */ +type srtentry_t = struct[10] of int; /* sizeof(struct srtentry) is 40. */ + +skip; skip; skip; skip; /* 0 1 2 3 unused */ +skip; skip; skip; skip; /* 4 5 6 7 unused */ +skip; skip; /* 8 9 unused */ + +/* 10 SIOCADDRT */ +routine rioctl_siocaddrt ( + reqport: io_t; + ifnam: ifname_t; + route: srtentry_t); + +/* 11 SIOCDELRT */ +routine rioctl_siocdelrt ( + reqport: io_t; + ifnam: ifname_t; + route: srtentry_t); diff --git a/lwip/Makefile b/lwip/Makefile index d0ddfd38..a048dc7d 100644 --- a/lwip/Makefile +++ b/lwip/Makefile @@ -24,7 +24,7 @@ SRCS = main.c io-ops.c socket-ops.c pfinet-ops.c iioctl-ops.c port-objs.c \ startup-ops.c options.c lwip-util.c startup.c IFSRCS = ifcommon.c hurdethif.c hurdloopif.c hurdtunif.c MIGSRCS = ioServer.c socketServer.c pfinetServer.c iioctlServer.c \ - startup_notifyServer.c + startup_notifyServer.c rioctlServer.c OBJS = $(patsubst %.S,%.o,$(patsubst %.c,%.o,\ $(SRCS) $(IFSRCS) $(MIGSRCS))) @@ -44,6 +44,7 @@ mig-sheader-prefix = lwip_ io-MIGSFLAGS = -imacros $(srcdir)/mig-mutate.h socket-MIGSFLAGS = -imacros $(srcdir)/mig-mutate.h iioctl-MIGSFLAGS = -imacros $(srcdir)/mig-mutate.h +rioctl-MIGSFLAGS = -imacros $(srcdir)/mig-mutate.h # cpp doesn't automatically make dependencies for -imacros dependencies. argh. lwip_io_S.h ioServer.c lwip_socket_S.h socketServer.c: mig-mutate.h diff --git a/lwip/iioctl-ops.c b/lwip/iioctl-ops.c index 4e285a49..14c4d585 100644 --- a/lwip/iioctl-ops.c +++ b/lwip/iioctl-ops.c @@ -21,6 +21,7 @@ /* Ioctls for network device configuration */ #include <lwip_iioctl_S.h> +#include <lwip_rioctl_S.h> #include <lwip/sockets.h> #include <lwip/inet.h> @@ -163,7 +164,7 @@ siocsifXaddr (struct sock_user *user, /* 10 SIOCADDRT -- Add a network route */ kern_return_t -lwip_S_iioctl_siocaddrt (struct sock_user *user, +lwip_S_rioctl_siocaddrt (struct sock_user *user, const ifname_t ifnam, const struct srtentry route) { @@ -172,7 +173,7 @@ lwip_S_iioctl_siocaddrt (struct sock_user *user, /* 11 SIOCDELRT -- Delete a network route */ kern_return_t -lwip_S_iioctl_siocdelrt (struct sock_user *user, +lwip_S_rioctl_siocdelrt (struct sock_user *user, const ifname_t ifnam, const struct srtentry route) { diff --git a/lwip/main.c b/lwip/main.c index 373f3935..0d7c9d6b 100644 --- a/lwip/main.c +++ b/lwip/main.c @@ -33,6 +33,7 @@ #include <lwip_socket_S.h> #include <lwip_pfinet_S.h> #include <lwip_iioctl_S.h> +#include <lwip_rioctl_S.h> #include <lwip_startup_notify_S.h> #include <netif/hurdethif.h> @@ -136,6 +137,7 @@ lwip_demuxer (mach_msg_header_t * inp, mach_msg_header_t * outp) if (routine || (routine = lwip_socket_server_routine (inp)) || (routine = lwip_pfinet_server_routine (inp)) || + (routine = lwip_rioctl_server_routine (inp)) || (routine = lwip_iioctl_server_routine (inp)) || (routine = lwip_startup_notify_server_routine (inp))) { diff --git a/lwip/mig-mutate.h b/lwip/mig-mutate.h index 3ed89c55..ecc9ce11 100644 --- a/lwip/mig-mutate.h +++ b/lwip/mig-mutate.h @@ -27,6 +27,7 @@ #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 RIOCTL_IMPORTS import "mig-decls.h"; #define SOCKET_INTRAN sock_user_t begin_using_socket_port (socket_t) #define SOCKET_INTRAN_PAYLOAD sock_user_t begin_using_socket_payload diff --git a/pfinet/Makefile b/pfinet/Makefile index 74cedcf6..a210a113 100644 --- a/pfinet/Makefile +++ b/pfinet/Makefile @@ -87,7 +87,7 @@ SRCS = sched.c timer-emul.c socket.c main.c ethernet.c \ kmem_cache.c stubs.c dummy.c tunnel.c pfinet-ops.c \ iioctl-ops.c MIGSRCS = ioServer.c socketServer.c startup_notifyServer.c \ - pfinetServer.c iioctlServer.c + pfinetServer.c iioctlServer.c rioctlServer.c OBJS = $(patsubst %.S,%.o,$(patsubst %.c,%.o,\ $(LINUXSRCS) $(ARCHSRCS) $(SRCS) $(MIGSRCS))) LINUXHDRS = bitops.h capability.h delay.h errqueue.h etherdevice.h \ @@ -142,6 +142,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 +rioctl-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 adf7bd82..7673f3a6 100644 --- a/pfinet/iioctl-ops.c +++ b/pfinet/iioctl-ops.c @@ -363,7 +363,7 @@ siocsifXaddr (struct sock_user *user, /* 10 SIOCADDRT -- Add a network route */ kern_return_t -S_iioctl_siocaddrt (struct sock_user *user, +S_rioctl_siocaddrt (struct sock_user *user, const ifname_t ifnam, const struct srtentry route) { @@ -388,7 +388,7 @@ S_iioctl_siocaddrt (struct sock_user *user, /* 11 SIOCDELRT -- Delete a network route */ kern_return_t -S_iioctl_siocdelrt (struct sock_user *user, +S_rioctl_siocdelrt (struct sock_user *user, const ifname_t ifnam, const struct srtentry route) { diff --git a/pfinet/main.c b/pfinet/main.c index cb01e0bf..1df987f0 100644 --- a/pfinet/main.c +++ b/pfinet/main.c @@ -84,6 +84,7 @@ extern struct argp pfinet_argp; #include "socket_S.h" #include "pfinet_S.h" #include "iioctl_S.h" +#include "rioctl_S.h" #include "startup_notify_S.h" int @@ -112,6 +113,7 @@ pfinet_demuxer (mach_msg_header_t *inp, if ((routine = io_server_routine (inp)) || (routine = socket_server_routine (inp)) || (routine = pfinet_server_routine (inp)) || + (routine = rioctl_server_routine (inp)) || (routine = iioctl_server_routine (inp)) || (routine = NULL, trivfs_demuxer (inp, outp)) || (routine = startup_notify_server_routine (inp))) @@ -128,6 +130,7 @@ pfinet_demuxer (mach_msg_header_t *inp, mig_routine_t routine; if ((routine = socket_server_routine (inp)) || (routine = pfinet_server_routine (inp)) || + (routine = rioctl_server_routine (inp)) || (routine = iioctl_server_routine (inp)) || (routine = NULL, trivfs_demuxer (inp, outp)) || (routine = startup_notify_server_routine (inp))) diff --git a/pfinet/mig-mutate.h b/pfinet/mig-mutate.h index 2bc385b8..d470152f 100644 --- a/pfinet/mig-mutate.h +++ b/pfinet/mig-mutate.h @@ -27,6 +27,7 @@ #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 RIOCTL_IMPORTS import "mig-decls.h"; #define SOCKET_INTRAN sock_user_t begin_using_socket_port (socket_t) #define SOCKET_INTRAN_PAYLOAD sock_user_t begin_using_socket_payload |