freebsd-nq/sys/netgraph
Gleb Smirnoff 9165bf6297 In r248885 I have reduced size of fake uio resid that ng_ksocket(4) passes
to the soreceive(). This exposed a bug. When reading from a raw socket,
when our fake limit is depleted, we receive a truncated mbuf chain, with
m->m_pkthdr.len > m_length(m). The first problem is that MSG_TRUNC was not
handled. The second one is that we didn't reinit uio_resid in our endless
loop (neither flags), and if socket buffer contained several records, then
we quickly deplete our fake limit. The third bug, actually introduced in
r248885, is that MJUMPAGESIZE isn't enough to handle maximum packet that
ng_ksocket(4) can theoretically receive.

Changes:
- Reinit uio_resid and flags before every call to soreceive().
- Set maximum acceptable size of packet to IP_MAXPACKET. As for now the
  module doesn't support INET6.
- Properly handle MSG_TRUNC return from soreceive().

PR:			184601
Submitted & tested by:	Viktor Velichkin <avisom yandex.ru>
Sponsored by:		Nginx, Inc.
2013-12-21 14:41:32 +00:00
..
atm Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
bluetooth Add support for the BCM20702A0 chipset, ASUS USB-BT400. 2013-09-01 19:27:32 +00:00
netflow The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
netgraph.h
ng_async.c
ng_async.h
ng_atmllc.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
ng_atmllc.h
ng_base.c Improve locking model used to protect netgraph topology: 2013-10-15 17:44:35 +00:00
ng_bpf.c
ng_bpf.h
ng_bridge.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
ng_bridge.h
ng_car.c
ng_car.h
ng_cisco.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
ng_cisco.h
ng_deflate.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
ng_deflate.h
ng_device.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
ng_device.h
ng_echo.c
ng_echo.h
ng_eiface.c Include necessary headers that now are available due to pollution 2013-10-28 07:29:16 +00:00
ng_eiface.h
ng_etf.c
ng_etf.h
ng_ether_echo.c
ng_ether_echo.h
ng_ether.c Include necessary headers that now are available due to pollution 2013-10-28 07:29:16 +00:00
ng_ether.h
ng_frame_relay.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
ng_frame_relay.h
ng_gif_demux.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
ng_gif_demux.h
ng_gif.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
ng_gif.h
ng_hole.c
ng_hole.h
ng_hub.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
ng_hub.h
ng_iface.c Restore the entropy gathering from the m_data pointer value, not the 2013-11-02 15:13:02 +00:00
ng_iface.h
ng_ip_input.c
ng_ip_input.h
ng_ipfw.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
ng_ipfw.h
ng_ksocket.c In r248885 I have reduced size of fake uio resid that ng_ksocket(4) passes 2013-12-21 14:41:32 +00:00
ng_ksocket.h
ng_l2tp.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
ng_l2tp.h
ng_lmi.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
ng_lmi.h
ng_message.h
ng_mppc.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
ng_mppc.h
ng_nat.c Add NGM_NAT_LIBALIAS_INFO command, that reports internal stats 2013-03-21 08:36:15 +00:00
ng_nat.h Add NGM_NAT_LIBALIAS_INFO command, that reports internal stats 2013-03-21 08:36:15 +00:00
ng_one2many.c Remove unsigned < 0 comparison. 2013-10-26 17:43:18 +00:00
ng_one2many.h
ng_parse.c Fix compilation warning. 2013-02-15 07:58:51 +00:00
ng_parse.h
ng_patch.c
ng_patch.h
ng_pipe.c Eliminate duplicated & dead code. 2013-11-08 22:40:33 +00:00
ng_pipe.h
ng_ppp.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
ng_ppp.h
ng_pppoe.c Add constant for PPP-Max-PayLoad tag. 2013-07-23 10:25:34 +00:00
ng_pppoe.h Add constant for PPP-Max-PayLoad tag. 2013-07-23 10:25:34 +00:00
ng_pptpgre.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
ng_pptpgre.h
ng_pred1.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
ng_pred1.h
ng_rfc1490.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
ng_rfc1490.h
ng_sample.c
ng_sample.h
ng_socket.c
ng_socket.h
ng_socketvar.h
ng_source.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
ng_source.h
ng_split.c
ng_split.h
ng_sppp.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
ng_sppp.h
ng_tag.c
ng_tag.h
ng_tcpmss.c
ng_tcpmss.h
ng_tee.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
ng_tee.h
ng_tty.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
ng_tty.h
ng_UI.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
ng_UI.h
ng_vjc.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
ng_vjc.h
ng_vlan.c Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
ng_vlan.h
NOTES