[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] rioctl: Use r not i group ioctl for SIOCADDRT/SIOCDELRT
From: |
Samuel Thibault |
Subject: |
Re: [PATCH] rioctl: Use r not i group ioctl for SIOCADDRT/SIOCDELRT |
Date: |
Thu, 22 Sep 2022 02:50:29 +0200 |
User-agent: |
NeoMutt/20170609 (1.8.3) |
Applied, thanks!
Damien Zammit, le jeu. 22 sept. 2022 00:42:17 +0000, a ecrit:
> ---
> 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
>
>
>
--
Samuel
---
Pour une évaluation indépendante, transparente et rigoureuse !
Je soutiens la Commission d'Évaluation de l'Inria.