diff options
author | Stefan Siegl <stesie@brokenpipe.de> | 2007-10-08 21:59:10 +0000 |
---|---|---|
committer | Stefan Siegl <stesie@brokenpipe.de> | 2007-10-08 21:59:10 +0000 |
commit | 1145e4da1321f80b8f1fe9184bdd8e596f2dcd2a (patch) | |
tree | ebdd0cc6a174d8a585fa93fadfbde01c5f4a96ac /pfinet/linux-src | |
parent | 9ef3092f3172c049beb847d1dca602e2b4b755c5 (diff) |
2007-10-08 Stefan Siegl <stesie@brokenpipe.de>
* config.h (CONFIG_IPV6, CONFIG_IPV6_EUI64): New defines,
set to 1.
* Makefile (ipv6-srcs): New variable.
(LINUXSRCS): Add ipv6-srcs.
* ethernet.c (ethernet_demuxer): Call skb_put instead of changing
skb->len directly, and thus now update skb->tail accordingly.
* pfinet.h (PORTCLASS_INET, PORTCLASS_INET6): New enums.
(trivfs_protid_portclasses, trivfs_protid_nportclasses)
(trivfs_cntl_portclasses, trivfs_cntl_nportclasses): Declare
these.
(pfinet_bootstrap_portclass): New variable.
(pfinet_bind): New function.
* main.c: Define _HACK_ERRNO_H. Include <errno.h>.
(trivfs_protid_portclasses, trivfs_cntl_portclasses): New slots
for PORTCLASS_INET6.
(trivfs_protid_nportclasses, trivfs_cntl_nportclasses): Set to 2.
(pfinet_bootstrap_portclass): New variable.
(pfinet_bind): New function.
(pfinet_activate_ipv6) [CONFIG_IPV6]: New function.
(main) [CONFIG_IPV6]: Call inet6_proto_init.
(main): Reordered to allow pfinet to not be started as a
translator, if pfinet_bind is used. If started as a translator,
treat pfinet_bootstrap_portclass when calling trivfs_startup.
* options.c: Include <net/sock.h>, <net/ip6_fib.h>,
<net/ip6_route.h> and <net/addrconf.h>.
(options): New option `ipv4'.
(options) [CONFIG_IPV6]: New options `ipv6', `address6' and
`gateway6'.
(parse_interface) [CONFIG_IPV6]: Add address6 and gateway6.
(parse_hook_add_interface) [CONFIG_IPV6]: Initialize address6 and
gateway6.
(parse_opt): Parse new args.
* socket-ops.c (S_socket_create): Call either
net_families[PF_INET]->create or net_families[PF_INET6]->create,
depending on receiving master.
(S_socket_create_address): Allow creation of AF_INET6 addresses.
* glue-include/asm/delay.h: New stub file.
* glue-include/linux/ipv6.h: Merged many bits unmodified from Linux
header file.
* glue-include/linux/in6.h: Likewise.
(ipv6mr_ifindex): New define, glue to ipv6mr_interface.
* glue-include/linux/socket.h (SOL_IPV6, SOL_ICMPV6): New defines.
* linux-src/net/ipv6/addrconf.c (ipv6_find_idev, inet6_addr_add)
(inet6_addr_del) [_HURD_]: Make these non-static.
(addrconf_set_dstaddr, addrconf_add_ifaddr, addrconf_del_ifaddr)
[_HURD_]: Don't define these functions.
* linux-src/net/ipv6/route_ipv6.c (ipv6_route_ioctl) [_HURD_]:
Likewise.
* linux-src/net/ipv6/af_inet6.c (inet6_ioctl) [_HURD_]: Don't
define the function, instead #define it to 0.
(inet6_proto_init) [_HURD_]: Don't call sit_init.
* linux-src/net/ipv6/udp_ipv6.c (udp_ioctl) [_HURD_]: Define
to 0.
(udp_v6_get_port): Put empty statement after label to silence
compiler.
* linux-src/net/ipv6/tcp_ipv6.c (tcp_v6_get_port, tcp_v6_rcv):
Likewise.
* linux-src/net/ipv6/icmpv6.c (icmpv6_rcv): Likewise.
(icmpv6_init) [_HURD_]: Don't initialize i_uid and i_gid.
* linux-src/net/ipv6/mcast.c (igmp6_init): Likewise.
* linux-src/net/ipv6/ndisc.c (ndisc_init): Likewise.
* linux-src/net/ipv6/ip6_fib.c (BUG_TRAP): Don't use __FUNCTION__
as a string but a variable, to keep gcc happy.
(fib6_walker_list): Make it non-static, to keep gcc happy.
* linux-src/net/ipv6/ip6_flowlabel.c (fl_create) [_HURD_]: Drop
IPV6_FL_S_USER support, since current->euid is not available.
Diffstat (limited to 'pfinet/linux-src')
-rw-r--r-- | pfinet/linux-src/net/ipv6/addrconf.c | 23 | ||||
-rw-r--r-- | pfinet/linux-src/net/ipv6/af_inet6.c | 10 | ||||
-rw-r--r-- | pfinet/linux-src/net/ipv6/icmpv6.c | 5 | ||||
-rw-r--r-- | pfinet/linux-src/net/ipv6/ip6_fib.c | 6 | ||||
-rw-r--r-- | pfinet/linux-src/net/ipv6/ip6_flowlabel.c | 7 | ||||
-rw-r--r-- | pfinet/linux-src/net/ipv6/mcast.c | 4 | ||||
-rw-r--r-- | pfinet/linux-src/net/ipv6/ndisc.c | 2 | ||||
-rw-r--r-- | pfinet/linux-src/net/ipv6/route_ipv6.c | 4 | ||||
-rw-r--r-- | pfinet/linux-src/net/ipv6/tcp_ipv6.c | 6 | ||||
-rw-r--r-- | pfinet/linux-src/net/ipv6/udp_ipv6.c | 8 |
10 files changed, 62 insertions, 13 deletions
diff --git a/pfinet/linux-src/net/ipv6/addrconf.c b/pfinet/linux-src/net/ipv6/addrconf.c index f8428bd8..7fbf4061 100644 --- a/pfinet/linux-src/net/ipv6/addrconf.c +++ b/pfinet/linux-src/net/ipv6/addrconf.c @@ -5,7 +5,7 @@ * Authors: * Pedro Roque <roque@di.fc.ul.pt> * - * $Id: addrconf.c,v 1.1 2007/10/08 21:12:30 stesie Exp $ + * $Id: addrconf.c,v 1.2 2007/10/08 21:59:10 stesie Exp $ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -247,7 +247,10 @@ static struct inet6_dev * ipv6_add_dev(struct device *dev) return ndev; } -static struct inet6_dev * ipv6_find_idev(struct device *dev) +#ifndef _HURD_ +static +#endif +struct inet6_dev * ipv6_find_idev(struct device *dev) { struct inet6_dev *idev; @@ -808,6 +811,7 @@ ok: } } +#ifndef _HURD_ /* * Set destination address. * Special case for SIT interfaces where we create a new "virtual" @@ -865,11 +869,15 @@ err_exit: rtnl_unlock(); return err; } +#endif /* not _HURD_ */ /* * Manual configuration of address on an interface */ -static int inet6_addr_add(int ifindex, struct in6_addr *pfx, int plen) +#ifndef _HURD_ +static +#endif +int inet6_addr_add(int ifindex, struct in6_addr *pfx, int plen) { struct inet6_ifaddr *ifp; struct inet6_dev *idev; @@ -900,7 +908,10 @@ static int inet6_addr_add(int ifindex, struct in6_addr *pfx, int plen) return -ENOBUFS; } -static int inet6_addr_del(int ifindex, struct in6_addr *pfx, int plen) +#ifndef _HURD_ +static +#endif +int inet6_addr_del(int ifindex, struct in6_addr *pfx, int plen) { struct inet6_ifaddr *ifp; struct inet6_dev *idev; @@ -932,6 +943,7 @@ static int inet6_addr_del(int ifindex, struct in6_addr *pfx, int plen) } +#ifndef _HURD_ int addrconf_add_ifaddr(void *arg) { struct in6_ifreq ireq; @@ -948,7 +960,9 @@ int addrconf_add_ifaddr(void *arg) rtnl_unlock(); return err; } +#endif /* not _HURD_ */ +#ifndef _HURD_ int addrconf_del_ifaddr(void *arg) { struct in6_ifreq ireq; @@ -965,6 +979,7 @@ int addrconf_del_ifaddr(void *arg) rtnl_unlock(); return err; } +#endif /* not _HURD_ */ static void sit_add_v4_addrs(struct inet6_dev *idev) { diff --git a/pfinet/linux-src/net/ipv6/af_inet6.c b/pfinet/linux-src/net/ipv6/af_inet6.c index 4ad6403c..9077c0f1 100644 --- a/pfinet/linux-src/net/ipv6/af_inet6.c +++ b/pfinet/linux-src/net/ipv6/af_inet6.c @@ -7,7 +7,7 @@ * * Adapted from linux/net/ipv4/af_inet.c * - * $Id: af_inet6.c,v 1.1 2007/10/08 21:12:30 stesie Exp $ + * $Id: af_inet6.c,v 1.2 2007/10/08 21:59:10 stesie Exp $ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -337,6 +337,10 @@ static int inet6_getname(struct socket *sock, struct sockaddr *uaddr, return(0); } +#ifdef _HURD_ +#define inet6_ioctl 0 +#else + static int inet6_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) { struct sock *sk = sock->sk; @@ -396,6 +400,8 @@ static int inet6_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg) return(0); } +#endif /* not _HURD_ */ + struct proto_ops inet6_stream_ops = { PF_INET6, @@ -542,7 +548,9 @@ __initfunc(void inet6_proto_init(struct net_proto *pro)) ip6_route_init(); ip6_flowlabel_init(); addrconf_init(); +#ifndef _HURD_ sit_init(); +#endif /* Init v6 transport protocols. */ udpv6_init(); diff --git a/pfinet/linux-src/net/ipv6/icmpv6.c b/pfinet/linux-src/net/ipv6/icmpv6.c index de5e7780..62dd149f 100644 --- a/pfinet/linux-src/net/ipv6/icmpv6.c +++ b/pfinet/linux-src/net/ipv6/icmpv6.c @@ -5,7 +5,7 @@ * Authors: * Pedro Roque <roque@di.fc.ul.pt> * - * $Id: icmpv6.c,v 1.1 2007/10/08 21:12:30 stesie Exp $ + * $Id: icmpv6.c,v 1.2 2007/10/08 21:59:10 stesie Exp $ * * Based on net/ipv4/icmp.c * @@ -499,6 +499,7 @@ int icmpv6_rcv(struct sk_buff *skb, unsigned long len) } default: /* CHECKSUM_UNNECESSARY */ + break; }; /* @@ -600,8 +601,10 @@ int __init icmpv6_init(struct net_proto_family *ops) "Failed to create the ICMP6 control socket.\n"); return -1; } +#ifndef _HURD_ icmpv6_socket->inode->i_uid = 0; icmpv6_socket->inode->i_gid = 0; +#endif icmpv6_socket->type = SOCK_RAW; if ((err = ops->create(icmpv6_socket, IPPROTO_ICMPV6)) < 0) { diff --git a/pfinet/linux-src/net/ipv6/ip6_fib.c b/pfinet/linux-src/net/ipv6/ip6_fib.c index 69735248..18df5c38 100644 --- a/pfinet/linux-src/net/ipv6/ip6_fib.c +++ b/pfinet/linux-src/net/ipv6/ip6_fib.c @@ -5,7 +5,7 @@ * Authors: * Pedro Roque <roque@di.fc.ul.pt> * - * $Id: ip6_fib.c,v 1.1 2007/10/08 21:12:30 stesie Exp $ + * $Id: ip6_fib.c,v 1.2 2007/10/08 21:59:10 stesie Exp $ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -36,7 +36,7 @@ #undef CONFIG_IPV6_SUBTREES #if RT6_DEBUG >= 1 -#define BUG_TRAP(x) ({ if (!(x)) { printk("Assertion (" #x ") failed at " __FILE__ "(%d):" __FUNCTION__ "\n", __LINE__); } }) +#define BUG_TRAP(x) ({ if (!(x)) { printk("Assertion (" #x ") failed at " __FILE__ "(%d):%s\n", __LINE__, __FUNCTION__); } }) #else #define BUG_TRAP(x) do { ; } while (0) #endif @@ -94,7 +94,7 @@ static struct timer_list ip6_fib_timer = { fib6_run_gc }; -static struct fib6_walker_t fib6_walker_list = { +struct fib6_walker_t fib6_walker_list = { &fib6_walker_list, &fib6_walker_list, }; diff --git a/pfinet/linux-src/net/ipv6/ip6_flowlabel.c b/pfinet/linux-src/net/ipv6/ip6_flowlabel.c index 9aa60db4..4a34b878 100644 --- a/pfinet/linux-src/net/ipv6/ip6_flowlabel.c +++ b/pfinet/linux-src/net/ipv6/ip6_flowlabel.c @@ -340,8 +340,15 @@ fl_create(struct in6_flowlabel_req *freq, char *optval, int optlen, int *err_p) fl->owner = current->pid; break; case IPV6_FL_S_USER: +#ifdef _HURD_ + /* FIXME + * Which euid shall be assigned? Where to get it, + * `struct task_struct' doesn't have a `euid'. + */ +#else fl->owner = current->euid; break; +#endif default: err = -EINVAL; goto done; diff --git a/pfinet/linux-src/net/ipv6/mcast.c b/pfinet/linux-src/net/ipv6/mcast.c index 27d1d316..87e9e909 100644 --- a/pfinet/linux-src/net/ipv6/mcast.c +++ b/pfinet/linux-src/net/ipv6/mcast.c @@ -5,7 +5,7 @@ * Authors: * Pedro Roque <roque@di.fc.ul.pt> * - * $Id: mcast.c,v 1.1 2007/10/08 21:12:30 stesie Exp $ + * $Id: mcast.c,v 1.2 2007/10/08 21:59:10 stesie Exp $ * * Based on linux/ipv4/igmp.c and linux/ipv4/ip_sockglue.c * @@ -671,8 +671,10 @@ __initfunc(int igmp6_init(struct net_proto_family *ops)) "Failed to create the IGMP6 control socket.\n"); return -1; } +#ifndef _HURD_ igmp6_socket->inode->i_uid = 0; igmp6_socket->inode->i_gid = 0; +#endif igmp6_socket->type = SOCK_RAW; if((err = ops->create(igmp6_socket, IPPROTO_ICMPV6)) < 0) { diff --git a/pfinet/linux-src/net/ipv6/ndisc.c b/pfinet/linux-src/net/ipv6/ndisc.c index bb5e0837..3b3d3f4e 100644 --- a/pfinet/linux-src/net/ipv6/ndisc.c +++ b/pfinet/linux-src/net/ipv6/ndisc.c @@ -1164,8 +1164,10 @@ __initfunc(int ndisc_init(struct net_proto_family *ops)) "Failed to create the NDISC control socket.\n"); return -1; } +#ifndef _HURD_ ndisc_socket->inode->i_uid = 0; ndisc_socket->inode->i_gid = 0; +#endif ndisc_socket->type = SOCK_RAW; if((err = ops->create(ndisc_socket, IPPROTO_ICMPV6)) < 0) { diff --git a/pfinet/linux-src/net/ipv6/route_ipv6.c b/pfinet/linux-src/net/ipv6/route_ipv6.c index c34a3b5d..5f79a226 100644 --- a/pfinet/linux-src/net/ipv6/route_ipv6.c +++ b/pfinet/linux-src/net/ipv6/route_ipv6.c @@ -5,7 +5,7 @@ * Authors: * Pedro Roque <roque@di.fc.ul.pt> * - * $Id: route_ipv6.c,v 1.1 2007/10/08 21:12:31 stesie Exp $ + * $Id: route_ipv6.c,v 1.2 2007/10/08 21:59:10 stesie Exp $ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -1156,6 +1156,7 @@ restart: } } +#ifndef _HURD_ int ipv6_route_ioctl(unsigned int cmd, void *arg) { struct in6_rtmsg rtmsg; @@ -1194,6 +1195,7 @@ int ipv6_route_ioctl(unsigned int cmd, void *arg) return -EINVAL; } +#endif /* not _HURD_ */ /* * Drop the packet on the floor diff --git a/pfinet/linux-src/net/ipv6/tcp_ipv6.c b/pfinet/linux-src/net/ipv6/tcp_ipv6.c index e9d1d079..85a5ab27 100644 --- a/pfinet/linux-src/net/ipv6/tcp_ipv6.c +++ b/pfinet/linux-src/net/ipv6/tcp_ipv6.c @@ -5,7 +5,7 @@ * Authors: * Pedro Roque <roque@di.fc.ul.pt> * - * $Id: tcp_ipv6.c,v 1.1 2007/10/08 21:12:31 stesie Exp $ + * $Id: tcp_ipv6.c,v 1.2 2007/10/08 21:59:10 stesie Exp $ * * Based on: * linux/net/ipv4/tcp.c @@ -103,7 +103,10 @@ static int tcp_v6_get_port(struct sock *sk, unsigned short snum) if (tb->port == rover) goto next; break; + next: + (void) 0; + } while (--remaining > 0); tcp_port_rover = rover; @@ -1426,6 +1429,7 @@ int tcp_v6_rcv(struct sk_buff *skb, unsigned long len) } default: /* CHECKSUM_UNNECESSARY */ + break; }; if((th->doff * 4) < sizeof(struct tcphdr) || diff --git a/pfinet/linux-src/net/ipv6/udp_ipv6.c b/pfinet/linux-src/net/ipv6/udp_ipv6.c index 377f5751..57b5db1a 100644 --- a/pfinet/linux-src/net/ipv6/udp_ipv6.c +++ b/pfinet/linux-src/net/ipv6/udp_ipv6.c @@ -7,7 +7,7 @@ * * Based on linux/ipv4/udp.c * - * $Id: udp_ipv6.c,v 1.1 2007/10/08 21:12:31 stesie Exp $ + * $Id: udp_ipv6.c,v 1.2 2007/10/08 21:59:10 stesie Exp $ * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -79,7 +79,9 @@ static int udp_v6_get_port(struct sock *sk, unsigned short snum) } while ((sk = sk->next) != NULL); best_size_so_far = size; best = result; + next: + (void) 0; } result = best; for(;; result += UDP_HTABLE_SIZE) { @@ -890,6 +892,10 @@ static struct inet6_protocol udpv6_protocol = "UDPv6" /* name */ }; +#ifdef _HURD_ +#define udp_ioctl 0 +#endif + struct proto udpv6_prot = { (struct sock *)&udpv6_prot, /* sklist_next */ (struct sock *)&udpv6_prot, /* sklist_prev */ |