summaryrefslogtreecommitdiff
path: root/ripngd
diff options
context:
space:
mode:
authorajs <ajs>2005-04-11 15:51:40 +0000
committerajs <ajs>2005-04-11 15:51:40 +0000
commit634f9ea20fce82c94407cb677b5487b65bde1973 (patch)
tree32db82e4ae3b0f409d6d06a0fda401f9d5df5cc9 /ripngd
parentdfb9a545f8e3500e6a99518193872f526c1f56ba (diff)
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.
Diffstat (limited to 'ripngd')
-rw-r--r--ripngd/ChangeLog6
-rw-r--r--ripngd/ripng_zebra.c4
2 files changed, 8 insertions, 2 deletions
diff --git a/ripngd/ChangeLog b/ripngd/ChangeLog
index ee13c927..8f874e0e 100644
--- a/ripngd/ChangeLog
+++ b/ripngd/ChangeLog
@@ -1,3 +1,9 @@
+2005-04-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+ * ripng_zebra.c (ripng_redistribute_unset, ripng_redistribute_clean):
+ Change 2nd arg to zebra_redistribute_send from zclient->sock
+ to zclient.
+
2005-04-08 Hasso Tepper <hasso at quagga.net>
* ripngd.[hc], ripng_interface.c, ripng_peer.c: inet6_ntoa() takes
diff --git a/ripngd/ripng_zebra.c b/ripngd/ripng_zebra.c
index 6e582599..51e73a01 100644
--- a/ripngd/ripng_zebra.c
+++ b/ripngd/ripng_zebra.c
@@ -155,7 +155,7 @@ ripng_redistribute_unset (int type)
zclient->redist[type] = 0;
if (zclient->sock > 0)
- zebra_redistribute_send (ZEBRA_REDISTRIBUTE_DELETE, zclient->sock, type);
+ zebra_redistribute_send (ZEBRA_REDISTRIBUTE_DELETE, zclient, type);
ripng_redistribute_withdraw (type);
@@ -228,7 +228,7 @@ ripng_redistribute_clean ()
{
if (zclient->sock > 0)
zebra_redistribute_send (ZEBRA_REDISTRIBUTE_DELETE,
- zclient->sock, redist_type[i].type);
+ zclient, redist_type[i].type);
zclient->redist[redist_type[i].type] = 0;