diff options
author | Quentin Young <qlyoung@cumulusnetworks.com> | 2017-06-08 23:47:33 +0200 |
---|---|---|
committer | Quentin Young <qlyoung@cumulusnetworks.com> | 2017-11-30 22:18:01 +0100 |
commit | 51abb4b49fe535661b191415a7d0fd3ba19b3819 (patch) | |
tree | f7a47f22d720e9a64f3acbf4ad86127de594716c /bgpd/bgp_io.h | |
parent | bgpd: restyle (diff) | |
download | frr-51abb4b49fe535661b191415a7d0fd3ba19b3819.tar.xz frr-51abb4b49fe535661b191415a7d0fd3ba19b3819.zip |
bgpd: update I/O docs
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
Diffstat (limited to 'bgpd/bgp_io.h')
-rw-r--r-- | bgpd/bgp_io.h | 78 |
1 files changed, 33 insertions, 45 deletions
diff --git a/bgpd/bgp_io.h b/bgpd/bgp_io.h index 6cda227a0..cf5fc6fb5 100644 --- a/bgpd/bgp_io.h +++ b/bgpd/bgp_io.h @@ -1,23 +1,22 @@ -/* - BGP I/O. - Implements a consumer thread to flush packets destined for remote peers. - - Copyright (C) 2017 Cumulus Networks - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; see the file COPYING; if not, write to the - Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, - MA 02110-1301 USA +/* BGP I/O. + * Implements packet I/O in a pthread. + * Copyright (C) 2017 Cumulus Networks + * Quentin Young + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; see the file COPYING; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + * MA 02110-1301 USA */ #ifndef _FRR_BGP_IO_H @@ -64,12 +63,9 @@ extern int bgp_io_stop(void **result, struct frr_pthread *fpt); * Turns on packet writing for a peer. * * After this function is called, any packets placed on peer->obuf will be - * written to peer->fd at regular intervals. Additionally it becomes unsafe to - * use peer->fd with select() or poll(). + * written to peer->fd until no more packets remain. * - * This function increments the peer reference counter with peer_lock(). - * - * If the peer is already registered, nothing happens. + * Additionally, it becomes unsafe to perform socket actions on peer->fd. * * @param peer - peer to register */ @@ -78,16 +74,11 @@ extern void bgp_writes_on(struct peer *peer); /** * Turns off packet writing for a peer. * - * After this function is called, any packets placed on peer->obuf will not be - * written to peer->fd. After this function returns it is safe to use peer->fd - * with select() or poll(). - * - * If the flush = true, a last-ditch effort will be made to flush any remaining - * packets to peer->fd. Upon encountering any error whatsoever, the attempt - * will abort. If the caller wishes to know whether the flush succeeded they - * may check peer->obuf->count against zero. + * After this function returns, packets placed on peer->obuf will not be + * written to peer->fd by the I/O thread. * - * If the peer is not registered, nothing happens. + * After this function returns it becomes safe to perform socket actions on + * peer->fd. * * @param peer - peer to deregister * @param flush - as described @@ -98,15 +89,14 @@ extern void bgp_writes_off(struct peer *peer); * Turns on packet reading for a peer. * * After this function is called, any packets received on peer->fd will be read - * and copied into the FIFO queue peer->ibuf. Additionally it becomes unsafe to - * use peer->fd with select() or poll(). + * and copied into the FIFO queue peer->ibuf. * - * When a full packet is read, bgp_process_packet() will be scheduled on the - * main thread. + * Additionally, it becomes unsafe to perform socket actions on peer->fd. * - * This function increments the peer reference counter with peer_lock(). + * Whenever one or more packets are placed onto peer->ibuf, a task of type + * THREAD_EVENT will be placed on the main thread whose handler is * - * If the peer is already registered, nothing happens. + * bgp_packet.c:bgp_process_packet() * * @param peer - peer to register */ @@ -116,12 +106,10 @@ extern void bgp_reads_on(struct peer *peer); * Turns off packet reading for a peer. * * After this function is called, any packets received on peer->fd will not be - * read. After this function returns it is safe to use peer->fd with select() - * or poll(). - * - * This function decrements the peer reference counter with peer_unlock(). + * read by the I/O thread. * - * If the peer is not registered, nothing happens. + * After this function returns it becomes safe to perform socket actions on + * peer->fd. * * @param peer - peer to deregister */ |