]> git.proxmox.com Git - mirror_frr.git/commit
2005-04-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
authorajs <ajs>
Mon, 11 Apr 2005 15:51:40 +0000 (15:51 +0000)
committerajs <ajs>
Mon, 11 Apr 2005 15:51:40 +0000 (15:51 +0000)
commit634f9ea20fce82c94407cb677b5487b65bde1973
tree32db82e4ae3b0f409d6d06a0fda401f9d5df5cc9
parentdfb9a545f8e3500e6a99518193872f526c1f56ba
2005-04-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

Implement non-blocking zclient I/O with buffering.
* zclient.h (struct zclient): Add two fields to support non-blocking
  I/O: struct buffer *wb, and struct thread *t_write.
  (zclient_free): Remove function.
  (zebra_redistribute_send): Change 2nd arg from socket fd to
  struct zclient * (needed to support non-blocking I/O and buffering).
  (zclient_send_message): New function to send an arbitrary
  message with non-blocking I/O.
* zclient.c (zclient_new): Create write buffer.
  (zclient_free): Remove unused function.
  (zclient_stop): Must cancel new t_write thread.  Also, reset
  all buffers: ibuf, obuf, and wb.
  (zclient_failed): New helper function for typical error handling.
  (zclient_flush_data): New thread to flush queued data.
  (zclient_send_message): New function to send the message in
  zclient->obuf to zebra using non-blocking I/O and buffering.
  (zebra_message_send, zapi_ipv4_route, zapi_ipv6_route): Use
  new zclient_send_message function instead of calling writen.
  (zclient_start): Set socket non-blocking.  Also, change 2nd arg
  to zebra_redistribute_send from zclient->sock to zclient.
  (zebra_redistribute_send): Change 2nd arg to struct zclient *.
  Can now use zclient->obuf to assemble the message instead of
  allocating a temporary stream.  And call zclient_send_message to
  send the message instead of writen.
  (zclient_read): Convert to support non-blocking I/O by using
  stream_read_try instead of deprecated stream_read.
  (zclient_redistribute): Change 2nd arg to zebra_redistribute_send
  from zclient->sock to zclient.
* ospf6_zebra.c (ospf6_zebra_redistribute, ospf6_zebra_no_redistribute):
  Change 2nd arg to zebra_redistribute_send from zclient->sock
  to zclient.
* ospf_zebra.c (ospf_zebra_add): Call zclient_send_message instead
  of writen.
* rip_zebra.c (rip_redistribute_set, rip_redistribute_unset,
  rip_redistribute_clean): Change 2nd arg to zebra_redistribute_send
  from zclient->sock to zclient.
* ripng_zebra.c (ripng_redistribute_unset, ripng_redistribute_clean):
  Change 2nd arg to zebra_redistribute_send from zclient->sock
  to zclient.
* bgp_zebra.c (bgp_redistribute_set, bgp_redistribute_unset):
  The 2nd arg to zebra_redistribute_send is now zclient instead of
  zclient->sock.
* isis_zebra.h (isis_zebra_finish): Remove declaration of unused
  function.
* isis_zebra.c (isis_zebra_route_add_ipv4): Call zclient_send_message
  to send the message to zebra instead of calling writen directly, since
  zclient_send_message understands non-blocking I/O and will manage
  the buffer queue appropriately.
  (isis_zebra_finish): Remove unused function, particularly since
  the zclient_free function has been removed.
16 files changed:
bgpd/ChangeLog
bgpd/bgp_zebra.c
isisd/ChangeLog
isisd/isis_zebra.c
isisd/isis_zebra.h
lib/ChangeLog
lib/zclient.c
lib/zclient.h
ospf6d/ChangeLog
ospf6d/ospf6_zebra.c
ospfd/ChangeLog
ospfd/ospf_zebra.c
ripd/ChangeLog
ripd/rip_zebra.c
ripngd/ChangeLog
ripngd/ripng_zebra.c