diff options
author | Marcus Brinkmann <marcus@gnu.org> | 2001-01-11 22:28:29 +0000 |
---|---|---|
committer | Marcus Brinkmann <marcus@gnu.org> | 2001-01-11 22:28:29 +0000 |
commit | 2a0220f19b262f122bc8dc7b68e6f4c0a5a16cae (patch) | |
tree | 933d00b5e3b4b7371ccf1b10f2a24affa2bfc70d /pfinet/socket-ops.c | |
parent | f63be3bda31acdc2a88e1cd64770966e73ca0b5d (diff) |
hurd/
2001-01-07 Marcus Brinkmann <marcus@gnu.org>
* ioctl_types.h: Include <net/if.h>, define types sockaddr_t and
ifname_t for iioctl.defs.
* iioctl.defs: New file for network interface ioctls.
* pfinet.defs: Remove old RPCs, fix subsystem number, add RPC for
SIOCGIFCONF.
pfinet/
2001-01-07 Marcus Brinkmann <marcus@gnu.org>
* pfinet-ops.c: New file to implement hurd/pfinet.defs.
* iioctl-ops.c: New file to implement iioctl.defs.
* linux-src/net/core/dev.c: If _HURD_, don't define netdev_chain as
static.
* glue-include/linux/if.h: New file, to avoid conflict between
<net/if.h> (imported by iioctl.defs) and linux version of it.
* main.c (pfinet_demuxer): Prototype pfinet_server and
iioctl_server, use them.
* pfinet.h: New global variables pfinetctl, pfinet_owner
and pfinet_group.
* main.c (main): New variable ST. Request pfinetctl from
trivfs_startup. Use it to determine the owner and group
of the underlying node.
* io-ops.c (S_io_reauthenticate): New index variable j. Set
newuser->isroot also for owners of the underlying file and
group owners.
(S_io_restrict_auth): Likewise.
* socket-ops.c: Include <sys/stat.h> and <hurd/fshelp.h>.
(S_socket_create): New variable isroot. If master->isroot is
not set, use fshelp_isowner to check ownership and if to set it.
Pass isroot to make_sock_user instead master->isroot.
* linux-src/net/ipv4/devinet.c (configure_device): Accept new parameter
BROADCAST, set ifa_broadcast if this is not INADDR_NONE.
(inquire_device): Accept new parameter broadcast, set it.
* main.c: Add new paramter to prototype of configure_device.
(main): Add new parameter to call to configure_device.
* options.c: Add new parameters to prototypes of configure_device
and inquire_device.
(trivfs_append_args): Define new variable BROAD, use its address
as the new parameter for inquire_device.
* linux-src/net/core/dev.c (dev_ifconf): Don't declare static
if _HURD_.
* linux-src/net/ipv4/devinet.c (inet_gifconf): If _HURD_, set
sin_len member.
* Makefile (MIGSRCS): Add pfinetServer.c and iioctlServer.c.
(SRCS): Add pfinet-ops.c, iioctl-ops.c.
Diffstat (limited to 'pfinet/socket-ops.c')
-rw-r--r-- | pfinet/socket-ops.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/pfinet/socket-ops.c b/pfinet/socket-ops.c index d6edce7e..5cbc74b3 100644 --- a/pfinet/socket-ops.c +++ b/pfinet/socket-ops.c @@ -18,10 +18,12 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ +#include <sys/stat.h> #include <hurd/trivfs.h> #include <string.h> #include <stddef.h> #include <fcntl.h> +#include <hurd/fshelp.h> #include "pfinet.h" #include "socket_S.h" @@ -42,6 +44,7 @@ S_socket_create (struct trivfs_protid *master, struct sock_user *user; struct socket *sock; error_t err; + int isroot; if (!master) return EOPNOTSUPP; @@ -63,12 +66,26 @@ S_socket_create (struct trivfs_protid *master, sock->type = sock_type; + isroot = master->isroot; + if (!isroot) + { + struct stat st; + + /* XXX */ + st.st_uid = pfinet_owner; + st.st_gid = pfinet_group; + + err = fshelp_isowner (&st, master->user); + if (! err) + isroot = 1; + } + err = - (*net_families[PF_INET]->create) (sock, protocol); if (err) sock_release (sock); else { - user = make_sock_user (sock, master->isroot, 0, 1); + user = make_sock_user (sock, isroot, 0, 1); *port = ports_get_right (user); *porttype = MACH_MSG_TYPE_MAKE_SEND; ports_port_deref (user); |