| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This issue come from ruby language community. Below test program
hang up when only run on Linux.
% uname -mrsv
Linux 2.6.26-2-486 #1 Sat Dec 26 08:37:39 UTC 2009 i686
% ruby -rsocket -ve '
BasicSocket.do_not_reverse_lookup = true
serv = TCPServer.open("127.0.0.1", 0)
s1 = TCPSocket.open("127.0.0.1", serv.addr[1])
s2 = serv.accept
s2.close
s1.write("a") rescue p $!
s1.write("a") rescue p $!
Thread.new {
s1.write("a")
}.join'
ruby 1.9.3dev (2010-07-06 trunk 28554) [i686-linux]
#<Errno::EPIPE: Broken pipe>
[Hang Here]
FreeBSD, Solaris, Mac doesn't. because Ruby's write() method call
select() internally. and tcp_poll has a bug.
SUS defined 'ready for writing' of select() as following.
| A descriptor shall be considered ready for writing when a call to an output
| function with O_NONBLOCK clear would not block, whether or not the function
| would transfer data successfully.
That said, EPIPE situation is clearly one of 'ready for writing'.
We don't have read-side issue because tcp_poll() already has read side
shutdown care.
| if (sk->sk_shutdown & RCV_SHUTDOWN)
| mask |= POLLIN | POLLRDNORM | POLLRDHUP;
So, Let's insert same logic in write side.
- reference url
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/31065
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/31068
Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
|
|
| |
The implementation is shared with IPv4
|
| |
|
| |
|
|
|
|
|
| |
Also add -Werror=old-style-definition to enforce new code.
Message-Id: <ZBZ+8xf7GHy2RT/h@jupiter.tail36e24.ts.net>
|
| |
|
|
|
|
|
|
| |
The Ethernet header is 14 bytes long, and thus leads to IP header
misalignment. This uses skb_reserve to introduce 2 bytes of padding to
realign IP headers.
|
|
|
|
| |
Message-Id: <Y2NNAegVOKg/X7OC@viriathus>
|
|
|
|
|
|
| |
Unfortunately the Linux source also uses <net/route.h>, so we have to
both make that include the glibc-provided one, and avoid making it emit
Linuxish definitions when they would conflict with glibc definitions.
|
|
|
|
| |
Message-Id: <20220909094234.517165-1-damien@zamaudio.com>
|
| |
|
|
|
|
|
|
|
| |
This comes from Linux 2.3.40 to 2.3.41 changes, to fix its behavior
according to common practice. Unconnected udp sockets notably should
not report errors, since the application doesn't have a way to relate it
with previous sends.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* pfinet/linux-src/include/net/tcp.h (tcp_port_rover): Remove
declaration
* pfinet/linux-src/include/net/udp.h (udp_port_rover): Likewise.
* pfinet/linux-src/net/ipv4/tcp_ipv4.c (tcp_port_rover): Remove
variable.
(tcp_v4_get_port): Take port hint from net_random() instead of
tcp_port_rover.
* pfinet/linux-src/net/ipv4/udp.c (udp_port_rover, udp_v4_get_port):
Likewise.
* pfinet/linux-src/net/ipv6/tcp_ipv6.c (tcp_v6_get_port): Likewise.
* pfinet/linux-src/net/ipv6/udp_ipv6.c (udp_v6_get_port): Likewise.
|
|
|
|
|
|
|
|
|
|
| |
* ext2fs/inode.c (diskfs_user_read_node): When sizeof(off_t) >= 8, add
di->i_size_high as high-64bit part to st->st_size. Drop setting
unused info->i_high_size.
(write_node): When sizeof(off_t) >= 8, write high-64bit part of st->st_size
to di->i_size_high.
* ext2fs/ext2_fs_i.h (ext2_inode_info): Remove i_high_size field.
* pfinet/linux-src/include/linux/ext2_fs_i.h (ext2_inode_info): Likewise.
|
|
|
|
|
| |
* pfinet/linux-src/include/linux/skbuff.h (__skb_pull): Return unsigned
char * instead of char *.
|
|
|
|
|
| |
This fixes a long list of undefined references when compiling with -O0
by using static instead of extern in header files.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
2007-10-14 Christian Dietrich <stettberger@dokucode.de>
* options.c (options): Marked -a, -g -m, -p, -A, -G
OPTION_ARG_OPTIONAL.
(parse_interface_copy_device): New function.
(parse_opt): When selecting another interface with -i
set the options from e.g. a prior fsysopts call as default
values. For -a, -g, -p, -g, -A, -G set the optional
argument as value. When there is no argument, delete the
value (e.g. unset default gateway). Delete delete default gateways
only if the set gateway is on an interface modified in this call.
Add always an route for dhcp packages on all devices. By doing
this we can send dhcp renew packages.
(trivfs_append_args): Add --gateway only once.
2007-10-14 Marco Gerards <metgerards@student.han.nl>
* options.c (parse_opt): Add the route for `0.0.0.0' so broadcasting
works.
* linux-src/net/ipv4/devinet.c (inet_insert_ifa) [_HURD_]: Don't
fail when the address is `0.0.0.0'.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Notably when remote eagerly sends a RST: we want to return EOF to the
application, not EPIPE.
* pfinet/linux-src/net/ipv4/tcp_output.c (tcp_connect): Set sk->done to 0.
* pfinet/linux-src/net/ipv4/tcp_input.c (tcp_fin): Set RCV_SHUTDOWN, and
sk->done to 1.
* pfinet/linux-src/net/ipv4/tcp.c (tcp_recv_urg): Only return ENOTCONN when
we never actually connect. Always return 0 when reception is closed.
(tcp_recvmsg): When any data is available, ignore errors and EOF. When no
data is available, first check for reception being closed, then for errors.
|
|
|
|
|
|
|
| |
Cherry-picked from Linux c1e9dcb37795b08a1f50b8de7b2ad5efcb15728f
* pfinet/linux-src/net/ipv4/af_inet.c (inet_getname): Clear `sin_zero'
part of `sin'.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Make empty bodies of control flow statements more explicit. Doing so
will allow us to use stricter compiler settings. This would have
cought 4ece292c.
* console-client/xkb/xkb.c: Make empty bodies more explicit
* libpipe/pipe.c: Likewise.
* mach-defpager/default_pager.c: Likewise.
* pfinet/linux-src/net/ipv4/fib_hash.c: Likewise.
* pflocal/connq.c: Likewise.
* pflocal/socket.c: Likewise.
|
|
|
|
| |
* pfinet/linux-src/include/net/addrconf.h: Include ipv6.h.
|
|
|
|
|
| |
Some files were not normalized. In console/motd.UTF8 the additional
newline is intentional. Empty files were excluded as well.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
kfree_s expects a pointer and a size argument. Currently the
sizeof(cache) is used as size argument, this is certainly not what was
intented.
For reference, this code was present in Linux up to version 2.3.14 and
was replaced in 2.3.15.
Found using coccinelle and
https://raw.github.com/coccinelle/coccinellery/master/sz/sz.cocci.
* pfinet/linux-src/net/ipv4/ipmr.c (ipmr_cache_delete): Fix kfree_s call.
|
|
|
|
|
|
|
|
|
|
|
| |
* pfinet/linux-src/include/linux/netdevice.h (netdevice): Add `change_flags'
field.
* pfinet/ethernet.c (ethernet_change_flags): Make function static.
(setup_ethernet_device): Set `change_flags' field of `dev' to
ethernet_change_flags.
* pfinet/linux-src/net/core/dev.c (dev_change_flags): Call `change_flags'
field of `dev' if non-nul, instead of calling ethernet_change_flags.
* pfinet/pfinet.h (ethernet_change_flags): Remove function prototype.
|
|
|
|
|
|
|
| |
* pfinet/linux-src/net/core/dev.c (dev_change_flags): Call
ethernet_change_flags.
* pfinet/iioctl-ops.c (S_iioctl_siocsifflags): Do not call
ethernet_change_flags after calling dev_change_flags.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Cherry-picked from Linux 524354b4d086a4f013343d727eaccb7b4c39eb25
* pfinet/glue-include/linux/ipv6.h: Include linux/config.h>
(__ipv6_only_sock, ipv6_only_sock): New macros
* pfinet/linux-src/include/linux/ipv6.h: Likewise.
* pfinet/linux-src/include/linux/in6.h (IPV6_V6ONLY): New macro.
* pfinet/linux-src/include/linux/sysctl.h (NET_IPV6_BINDV6ONLY): New macro.
* pfinet/linux-src/include/net/ipv6.h (sysctl_ipv6_bindv6only): Declare
variable.
* pfinet/linux-src/include/net/sock.h (ipv6_pinfo): Add ipv6only field.
* pfinet/linux-src/net/ipv4/tcp_ipv4.c: Include linux/ipv6.h.
(tcp_v4_get_port, tcp_v4_lookup_listener): Test for ipv6_only_sock.
* pfinet/linux-src/net/ipv4/udp.c: Include linux/ipv6.h.
(udp_v4_get_port, udp_v4_lookup_longway, udp_v4_mcast_next): Test for
ipv6_only_sock.
* pfinet/linux-src/net/ipv6/af_inet6.c (sysctl_ipv6_bindv6only): New
variable.
(inet6_create): Initialize ipv6only field to sysctl_ipv6_bindv6only.
* pfinet/linux-src/net/ipv6/ipv6_sockglue.c (ipv6_setsockopt): Test for
ipv6_only_sock.
(ipv6_setsockopt, ipv6_getsockopt): Support IPV6_V6ONLY case.
* pfinet/linux-src/net/ipv6/tcp_ipv6.c (ipv6_rcv_saddr_equal): New inline
function.
(tcp_v6_get_port): Replace old tests with ipv6_rcv_saddr_equal.
(tcp_v6_connect): Test for __ipv6_only_sock.
* pfinet/linux-src/net/ipv6/udp_ipv6.c (udv6_rcv_saddr_equal): New inline
function.
(udp_v6_get_port): Replace old tests with udv6_rcv_saddr_equal.
(udpv6_connect, udpv6_sendmsg): Test for __ipv6_only_sock.
|
|
|
|
|
| |
* pfinet/linux-src/net/ipv4/tcp_ipv4.c (sysctl_local_port_range): Set port
range to 32768-61000.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some calls to `error', `printk', and `problem' lacked a format
string, leading to build failure when compiling with stricter CFLAGS.
* nfs/mount.c (mount_root): Add format string for `error' calls which
lacked it.
* pfinet/main.c (pfinet_bind): Likewise.
* term/main.c (main): Likewise.
* utils/shd.c (run): Likewise.
* utils/storeinfo.c (main): Likewise.
* pfinet/linux-src/include/net/tcp.h (tcp_clear_xmit_timer): Add
format string for `printk' call which lacked it.
(tcp_timer_is_set): Likewise.
* ufs-fsck/utilities.c (punt): Add format string for `problem' call
which lacked it.
|
|
|
|
|
|
| |
* Fix spelling with codespell[1] and manually review it.
[1] http://git.profusion.mobi/cgit.cgi/lucas/codespell/
|
|
|
|
|
| |
* pfinet/linux-src/net/ipv4/ip_options.c (ip_options_get): calculate
the size of opt only once, free opt before returning -EFAULT.
|
|
|
|
|
| |
* pfinet/linux-src/net/ipv6/ip6_fib.c (fib6_locate): Do not dereference fn
when it is NULL.
|
|
|
|
|
|
|
|
|
|
| |
Fixes sshd startup on inet6-enabled systems.
* pfinet/socket-ops.c (S_socket_create_address): Accept creating
AF_UNSPEC addresses too.
* pfinet/linux-src/net/ipv6/udp_ipv6.c (udpv6_connect): When address
family is AF_UNSPEC, call udp_connect() and clear daddr, saddr, and
rcv_saddr.
|
|
|
|
|
| |
* pfinet/linux-src/net/ipv6/raw_ipv6.c (rawv6_init_sk): Replace
yet-undefined raw6_sk with proper translation.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- RFC2292 bis compliance: enable checksumming of ICMPv6 raw
sockets by default, reject odd offsets
- calculate checksum correctly when user forgets to
uninitialize checksum word
* net/ipv6/raw_ipv6.c (rawv6_frag_cksum): Fix offset check. Compensate for any
user-provided checksum.
(rawv6_setsockopt): Reject odd checkum offsets with EINVAL.
(rawv6_init_sk): Enable kernel-computed checksum by default for
IPPROTO_ICMPV6 sockets.
|
|
|
|
|
|
| |
* pfinet/linux-src/include/asm-i386/checksum.h (ip_fast_csum):
Add memory clobber to assembly snippet.
(csum_ipv6_magic): Likewise.
|
|
|
|
|
| |
* pfinet/linux-src/net/ipv4/tcp_ipv4.c (tcp_v4_connect): xchg
&rt->u.dst instead of just rt with sk->dst_cache.
|
|
|
|
|
|
|
| |
* linux-src/net/ipv6/addrconf.c (ipv6_addr_type): Use
__in6_u.__u6_addr32 member instead of in6_u.u6_addr32.
* linux-src/net/ipv6/icmpv6.c (icmpv6_rcv): Use
__in6_u.__u6_addr16 member instead of in6_u.u6_addr16.
|
|
|
|
|
|
|
|
|
|
|
| |
* options.c (ipv6_get_dflt_router) [CONFIG_IPV6]: New function.
(parse_opt) [CONFIG_IPV6]: Don't delete IPv6 interface address, if
it would be re-added immediately, but delete if otherwise.
Do not touch inet6_ifaddr after inet6_addr_del was called.
Don't purge and re-add IPv6 default router unless necessary.
(trivfs_append_args) [CONFIG_IPV6]: Use ipv6_get_dflt_router.
* linux-src/net/ipv6/addrconf.c (ipv6_del_addr): Call del_timer
on ifp->timer.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* linux-src/net/ipv6/af_inet6.c (inet6_getname): Initialize
sin6_scope_id.
* linux-src/net/ipv6/datagram_ipv6.c (ipv6_recv_error): Likewise.
* linux-src/net/ipv6/tcp_ipv6.c (v6_addr2sockaddr): Likewise.
* linux-src/net/ipv6/udp_ipv6.c (udpv6_recvmsg): Likewise.
* linux-src/net/ipv6/raw_ipv6.c (rawv6_recvmsg): Likewise.
* linux-src/net/ipv6/af_inet6.c (inet6_bind): For link-local IPv6
addresses copy sin6_scope_id to bound_dev_if and error out unless
bound.
* linux-src/net/ipv6/tcp_ipv6.c (tcp_v6_connect): Likewise.
* linux-src/net/ipv6/udp_ipv6.c (udpv6_connect): Likewise.
* linux-src/net/ipv6/raw_ipv6.c (rawv6_bind): Likewise.
* linux-src/net/ipv6/raw_ipv6.c (rawv6_sendmsg): For link-local
IPv6 addresses bind packet to interface specified by sin6_scope_id.
* linux-src/net/ipv6/udp_ipv6.c (udpv6_sendmsg): Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Import a number of files from Linux 2.2.14. Renamed some of them,
to have unique filenames as required by the make system.
* linux-src/net/ipv6/addrconf.c: Import file.
* linux-src/net/ipv6/af_inet6.c: Likewise.
* linux-src/net/ipv6/exthdrs.c: Likewise.
* linux-src/net/ipv6/ip6_fib.c: Likewise.
* linux-src/net/ipv6/ip6_flowlabel.c: Likewise.
* linux-src/net/ipv6/ip6_input.c: Likewise.
* linux-src/net/ipv6/ip6_output.c: Likewise.
* linux-src/net/ipv6/ipv6_sockglue.c: Likewise.
* linux-src/net/ipv6/mcast.c: Likewise.
* linux-src/net/ipv6/ndisc.c: Likewise.
* linux-src/net/ipv6/reassembly.c: Likewise.
* linux-src/net/ipv6/tcp_ipv6.c: Likewise.
* linux-src/net/ipv6/datagram_ipv6.c: Import file (was datagram.c).
* linux-src/net/ipv6/icmpv6.c: Import file (was icmp.c).
* linux-src/net/ipv6/protocol_ipv6.c: Import file (was protocol.c).
* linux-src/net/ipv6/raw_ipv6.c: Import file (was raw.c).
* linux-src/net/ipv6/route_ipv6.c: Import file (was route.c).
* linux-src/net/ipv6/udp_ipv6.c: Import file (was udp.c).
|
|
|
|
|
|
| |
* glue-include/asm/system.h (xchg): Fix invalid lvalue.
* linux-src/net/ipv4/tcp_ipv4.c (tcp_v4_rst_req): Don't use ?: as a
lvalue.
|
|
|
|
|
|
|
|
|
| |
* linux-src/net/ipv4/udp.c (udp_v4_get_port): Put empty statement
after label to silence compiler warning.
* linux-src/net/ipv4/tcp_ipv4.c
(tcp_v4_get_port, tcp_v4_connect, tcp_v4_rcv): Likewise.
* linux-src/net/ipv4/route.c (ip_rt_redirect): Likewise.
* linux-src/net/ipv4/arp.c (arp_constructor): Likewise.
|
|
|
|
| |
* linux-src/arch/i386/lib/checksum.S: Fix comment syntax.
|
|
|
|
|
|
|
|
|
|
|
|
| |
* linux-src/include/asm-i386/checksum.h (ip_fast_csum): Use
string literals concatenation instead of multi-line string
literal.
(csum_fold): Likewise.
(csum_tcpudp_nofold): Likewise.
(csum_ipv6_magic): Likewise.
* linux-src/include/net/sock.h (SOCK_DEBUG): Don't use ## to
concatenate string literals.
|
|
|
|
| |
* linux-src/include/net/ip_fib.h: Fix obsolescent #endif syntax.
|
|
|
|
|
|
|
|
|
|
| |
* linux-src/arch/alpha/lib/csum_partial_copy.c: New file,
taken verbatim from Linux 2.2.14.
* Makefile (arch-lib-srcs): Add csum_partial_copy.c.
(LINUXSRCS): Match $(arch-lib-srcs) subset in arch/$(asm_syntax)/lib.
(OBJS): Use delayed evaluation.
* glue-include/asm/uaccess.h (__get_user): New macro.
(__m): New macro.
|
|
|
|
|
|
|
| |
* linux-src/include/linux/net.h (struct socket) [_HURD_]:
New member `st_ino'.
* io-ops.c (S_io_stat, S_io_identity): Use that.
* socket.c (sock_alloc): Initialize it with a monotonic counter.
|
|
|
|
|
|
|
| |
* linux-src/net/ipv4/devinit.c (configure_device): Initialize IFA
correctly. If we are setting the peer on an IFF_POINTOPOINT link,
force the netmask to 255.255.255.255.
By Neal H Walfield <neal@cs.uml.edu>.
|
|
|
|
|
| |
* linux-src/include/linux/net.h (struct file): Move forward
decl outside of `struct socket' type definition, for gcc-2.96 syntax.
|