freebsd-dev/sys/netgraph
Gleb Smirnoff 8afe16d57b In the splnet times, netgraph was functional and synchronous. Nowadays,
an item may be queued and processed later. While this is OK for mbufs,
this is a problem for control messages.

In the framework:
- Add optional callback function pointer to an item. When item gets
  applied the callback is executed from ng_apply_item().
- Add new flag NG_PROGRESS. If this flag is supplied, then return
  EINPROGRESS instead of 0 in case if item failed to deliver
  synchronously and was queued.
- Honor NG_PROGRESS in ng_snd_item().

In ng_socket:
- When userland sends control message add callback to the item.
- If ng_snd_item() returns EINPROGRESS, then sleep.

This change fixes possible races in ngctl(8) scripts.

Reviewed by:	julian
Approved by:	re (scottl)
2005-07-05 17:35:20 +00:00
..
atm Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
bluetooth Eliminate unused argument in PCMCIA_CARD macro. 2005-06-24 14:36:54 +00:00
netflow Catch up with new ng_package_data(). 2005-05-16 17:10:08 +00:00
netgraph.h In the splnet times, netgraph was functional and synchronous. Nowadays, 2005-07-05 17:35:20 +00:00
ng_async.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_async.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_atmllc.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_atmllc.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_base.c In the splnet times, netgraph was functional and synchronous. Nowadays, 2005-07-05 17:35:20 +00:00
ng_bpf.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_bpf.h Fix typo in a comment. 2005-02-12 18:10:26 +00:00
ng_bridge.c In revision 1.29 timeout() was converted to ng_callout(). 2005-02-09 15:14:44 +00:00
ng_bridge.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_cisco.c NG_MKRESPONSE() macro includes sizeof struct ng_mesg when doing allocation. 2005-04-13 14:03:28 +00:00
ng_cisco.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_device.c Change m_uiotombuf so it will accept offset at which data should be copied 2005-05-04 18:55:03 +00:00
ng_device.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_echo.c - Return error, if there was one. 2005-04-15 10:14:00 +00:00
ng_echo.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_eiface.c Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
ng_eiface.h Added ASCII version of the NGM_EIFACE_GET_IFNAME message, "getifname". 2005-02-03 11:52:42 +00:00
ng_etf.c Remove ng_connect_t where it is unused. Probably it remained from ng_source.c. 2005-03-14 20:49:48 +00:00
ng_etf.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_ether.c Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
ng_ether.h Add new netgraph control message NGM_ETHER_DETACH, which actually 2005-02-14 12:01:09 +00:00
ng_fec.c Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
ng_fec.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_frame_relay.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_frame_relay.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_gif_demux.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_gif_demux.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_gif.c Stop embedding struct ifnet at the top of driver softcs. Instead the 2005-06-10 16:49:24 +00:00
ng_gif.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_hole.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_hole.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_hub.c Having moved metadata usage to mbuf tags, remove code that supports 2004-06-26 22:24:16 +00:00
ng_hub.h A simple packet distribution node type that acts like an Ethernet hub. 2004-04-17 12:42:17 +00:00
ng_iface.c Fix some long standing bugs in writing to the BPF device attached to 2005-06-26 18:11:11 +00:00
ng_iface.h Bump cookie value to reflect change in NGM_IFACE_GET_IFNAME semantics. 2005-02-13 16:36:41 +00:00
ng_ip_input.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_ip_input.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_ipfw.c Fix check for leading zero, so that it does not block two zeroes 2005-05-29 12:20:41 +00:00
ng_ipfw.h Add a ng_ipfw node, implementing a quick and simple interface between 2005-02-05 12:06:33 +00:00
ng_ksocket.c Catch up with new ng_send_fn1() interface. 2005-05-16 17:07:39 +00:00
ng_ksocket.h When netgraph(4) was converted to use mbuf_tags(9) instead of meta-data 2005-02-12 14:54:19 +00:00
ng_l2tp.c - Use ng_callout() instead of callout_reset(9). 2005-01-11 11:51:17 +00:00
ng_l2tp.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_lmi.c Refer to the mbuf header length field via the official method. 2005-06-09 10:27:27 +00:00
ng_lmi.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_message.h Add macro NG_COPYMESSAGE(), which allocates memory and creates a 2005-04-20 12:18:22 +00:00
ng_mppc.c MPPC node is not thread safe. 2005-06-03 09:06:00 +00:00
ng_mppc.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_nat.c - After LibAlias processing check for TCP packet with th_x2 field 2005-06-27 07:39:13 +00:00
ng_nat.h ng_nat - a netgraph(4) node, which does NAT 2005-05-05 23:41:21 +00:00
ng_one2many.c Fix getting stats from many links with index > 0. 2005-03-11 10:29:38 +00:00
ng_one2many.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_parse.c Replace NG_PARSE_APPEND() macro with ng_parse_append() function. Check 2005-03-01 11:31:06 +00:00
ng_parse.h Fix variable name in comment num=>alen. (Lost part of commit rev 1.2) 2005-01-16 19:12:27 +00:00
ng_ppp.c Refactor places where ng_package_data() failed. 2005-05-16 19:12:57 +00:00
ng_ppp.h Fix incorrect comment. 2005-02-10 02:43:26 +00:00
ng_pppoe.c Remove ng_connect_t where it is unused. Probably it remained from ng_source.c. 2005-03-14 20:49:48 +00:00
ng_pppoe.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_pptpgre.c Utilize callout_pending() macro 2005-01-11 12:20:28 +00:00
ng_pptpgre.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_rfc1490.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_rfc1490.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_sample.c Whitespace. 2005-02-06 19:24:59 +00:00
ng_sample.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_socket.c In the splnet times, netgraph was functional and synchronous. Nowadays, 2005-07-05 17:35:20 +00:00
ng_socket.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_socketvar.h In the splnet times, netgraph was functional and synchronous. Nowadays, 2005-07-05 17:35:20 +00:00
ng_source.c Major overhaul and cleanup of ng_source node. 2005-04-05 17:22:05 +00:00
ng_source.h Major overhaul and cleanup of ng_source node. 2005-04-05 17:22:05 +00:00
ng_split.c Return EINVAL for incorrect hook names. 2005-05-23 13:39:20 +00:00
ng_split.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_sppp.c Fix some long standing bugs in writing to the BPF device attached to 2005-06-26 18:11:11 +00:00
ng_sppp.h Parse "getifname" using the standard parse string type. 2005-02-03 13:03:31 +00:00
ng_tcpmss.c - Remove redundant parenthesis in M_CHECK macro. 2005-06-10 12:44:21 +00:00
ng_tcpmss.h Add ng_tcpmss node, which alters MSS options of TCP packets. Useful to 2005-06-10 08:02:34 +00:00
ng_tee.c Update statistics only in case if delivery was successfull. 2005-06-07 12:22:13 +00:00
ng_tee.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_tty.c Locking and cleanup of tty netgraph node. Tty stack is Giant-locked, 2005-01-13 07:43:12 +00:00
ng_tty.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_UI.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_UI.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_vjc.c /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_vjc.h /* -> /*- for license, minor formatting changes 2005-01-07 01:45:51 +00:00
ng_vlan.c When netgraph flow control message comes from downstream, broadcast 2005-04-20 14:19:20 +00:00
ng_vlan.h Netgraph node type for IEEE 802.1Q VLAN tagging. 2004-03-01 17:22:16 +00:00
NOTES