aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2022-09-22 00:42:17 +0000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2022-09-22 02:48:39 +0200
commitb49d42d0613666b2835e7e5ca2d598b76d172876 (patch)
treea9c0f0a7512b6b93ce4afe6d86b8bdde7c7ab5af
parent58a4f46c7a3a223223a98a24f1b1dc7729c24521 (diff)
downloadhurd-b49d42d0613666b2835e7e5ca2d598b76d172876.tar.gz
hurd-b49d42d0613666b2835e7e5ca2d598b76d172876.tar.bz2
hurd-b49d42d0613666b2835e7e5ca2d598b76d172876.zip
rioctl: Use r not i group ioctl for SIOCADDRT/SIOCDELRT
Message-Id: <20220922004105.961869-1-damien@zamaudio.com>
-rw-r--r--hurd/iioctl.defs12
-rw-r--r--hurd/rioctl.defs56
-rw-r--r--lwip/Makefile3
-rw-r--r--lwip/iioctl-ops.c5
-rw-r--r--lwip/main.c2
-rw-r--r--lwip/mig-mutate.h1
-rw-r--r--pfinet/Makefile3
-rw-r--r--pfinet/iioctl-ops.c4
-rw-r--r--pfinet/main.c3
-rw-r--r--pfinet/mig-mutate.h1
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