bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] rioctl: Use r not i group ioctl for SIOCADDRT/SIOCDELRT


From: Damien Zammit
Subject: [PATCH] rioctl: Use r not i group ioctl for SIOCADDRT/SIOCDELRT
Date: Thu, 22 Sep 2022 00:42:17 +0000

---
 hurd/iioctl.defs    | 12 ++--------
 hurd/rioctl.defs    | 56 +++++++++++++++++++++++++++++++++++++++++++++
 lwip/Makefile       |  3 ++-
 lwip/iioctl-ops.c   |  5 ++--
 lwip/main.c         |  2 ++
 lwip/mig-mutate.h   |  1 +
 pfinet/Makefile     |  3 ++-
 pfinet/iioctl-ops.c |  4 ++--
 pfinet/main.c       |  3 +++
 pfinet/mig-mutate.h |  1 +
 10 files changed, 74 insertions(+), 16 deletions(-)
 create mode 100644 hurd/rioctl.defs

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
--
2.34.1





reply via email to

[Prev in Thread] Current Thread [Next in Thread]