\hypertarget{classIoTcpUdpManager}{
\section{IoTcpUdpManager Class Reference}
\label{classIoTcpUdpManager}\index{IoTcpUdpManager@{IoTcpUdpManager}}
}


A class that manages I/O TCP/UDP communications.  




{\ttfamily \#include $<$io\_\-tcpudp\_\-manager.hh$>$}

Inheritance diagram for IoTcpUdpManager:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{classIoTcpUdpManager}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classIoTcpUdpManager_a87adc7c27cc64a6bdd3bec4f9f1a3ca3}{
\hyperlink{classIoTcpUdpManager_a87adc7c27cc64a6bdd3bec4f9f1a3ca3}{IoTcpUdpManager} (\hyperlink{classFeaNode}{FeaNode} \&fea\_\-node, const \hyperlink{classIfTree}{IfTree} \&iftree)}
\label{classIoTcpUdpManager_a87adc7c27cc64a6bdd3bec4f9f1a3ca3}

\begin{DoxyCompactList}\small\item\em Constructor for \hyperlink{classIoTcpUdpManager}{IoTcpUdpManager}. \item\end{DoxyCompactList}\item 
\hypertarget{classIoTcpUdpManager_aecf6845a82a3e3551c73e11d1b91c23f}{
virtual \hyperlink{classIoTcpUdpManager_aecf6845a82a3e3551c73e11d1b91c23f}{$\sim$IoTcpUdpManager} ()}
\label{classIoTcpUdpManager_aecf6845a82a3e3551c73e11d1b91c23f}

\begin{DoxyCompactList}\small\item\em Virtual destructor. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpManager_add75cfd99fdc32a0424a9321ae84f686}{tcp\_\-open} (int family, const string \&creator, string \&sockid, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Open a TCP socket. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpManager_a142661489bbefb5906b505e2f86ffb6a}{udp\_\-open} (int family, const string \&creator, string \&sockid, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Open an UDP socket. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpManager_ab6a302bd1aac4c31b32a7e64e4171d10}{tcp\_\-open\_\-and\_\-bind} (int family, const string \&creator, const \hyperlink{classIPvX}{IPvX} \&local\_\-addr, uint16\_\-t local\_\-port, string \&sockid, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Create a bound TCP socket. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpManager_a441e110ddcb58ea5b6a96e58eb6a0740}{udp\_\-open\_\-and\_\-bind} (int family, const string \&creator, const \hyperlink{classIPvX}{IPvX} \&local\_\-addr, uint16\_\-t local\_\-port, const string \&local\_\-dev, int reuse, string \&sockid, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Create a bound UDP socket. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpManager_a5403032a1304a632875d35e35c5990aa}{udp\_\-open\_\-bind\_\-join} (int family, const string \&creator, const \hyperlink{classIPvX}{IPvX} \&local\_\-addr, uint16\_\-t local\_\-port, const \hyperlink{classIPvX}{IPvX} \&mcast\_\-addr, uint8\_\-t ttl, bool reuse, string \&sockid, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Create a bound UDP multicast socket. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpManager_a4f60bc5783f79849b5bce780300bb125}{tcp\_\-open\_\-bind\_\-connect} (int family, const string \&creator, const \hyperlink{classIPvX}{IPvX} \&local\_\-addr, uint16\_\-t local\_\-port, const \hyperlink{classIPvX}{IPvX} \&remote\_\-addr, uint16\_\-t remote\_\-port, string \&sockid, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Create a bound and connected TCP socket. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpManager_a8171ad660081f061d6b4efb7689258db}{udp\_\-open\_\-bind\_\-connect} (int family, const string \&creator, const \hyperlink{classIPvX}{IPvX} \&local\_\-addr, uint16\_\-t local\_\-port, const \hyperlink{classIPvX}{IPvX} \&remote\_\-addr, uint16\_\-t remote\_\-port, string \&sockid, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Create a bound and connected UDP socket. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpManager_a9d6df78754d54a3dd3b6b7423f749075}{udp\_\-open\_\-bind\_\-broadcast} (int family, const string \&creator, const string \&ifname, const string \&vifname, uint16\_\-t local\_\-port, uint16\_\-t remote\_\-port, bool reuse, bool limited, bool connected, string \&sockid, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Create a bound and connected UDP broadcast socket. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpManager_ad70b09e0f6c4f69aaf69fb08addfd6d5}{bind} (int family, const string \&sockid, const \hyperlink{classIPvX}{IPvX} \&local\_\-addr, uint16\_\-t local\_\-port, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Bind a socket. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpManager_a95457950461bd6aaba29c9d7cd562353}{udp\_\-join\_\-group} (int family, const string \&sockid, const \hyperlink{classIPvX}{IPvX} \&mcast\_\-addr, const \hyperlink{classIPvX}{IPvX} \&join\_\-if\_\-addr, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Join multicast group on already bound socket. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpManager_a08f31dcd2295d5ba1f06c7eebe999378}{udp\_\-leave\_\-group} (int family, const string \&sockid, const \hyperlink{classIPvX}{IPvX} \&mcast\_\-addr, const \hyperlink{classIPvX}{IPvX} \&leave\_\-if\_\-addr, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Leave multicast group on already bound socket. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpManager_a8de21df8fc759a762a45e29ac4438da4}{close} (int family, const string \&sockid, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Close socket. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpManager_aee31b84eafa206f8807fb06ae967a70b}{tcp\_\-listen} (int family, const string \&sockid, uint32\_\-t backlog, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Listen for inbound connections on socket. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpManager_a15e52a3c65f13f583a2b16b74a118fd8}{udp\_\-enable\_\-recv} (int family, const string \&sockid, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Enable a UDP socket for datagram reception. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpManager_abbe504cd19ae49c6304d20666471f644}{send} (int family, const string \&sockid, const vector$<$ uint8\_\-t $>$ \&data, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} data on socket. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpManager_aacc5bfb677fdb4722213276632b2034a}{send\_\-to} (int family, const string \&sockid, const \hyperlink{classIPvX}{IPvX} \&remote\_\-addr, uint16\_\-t remote\_\-port, const vector$<$ uint8\_\-t $>$ \&data, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} data on socket to a given destination. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpManager_a84c1ff6002dc951fff4dd3bc44e5e187}{send\_\-from\_\-multicast\_\-if} (int family, const string \&sockid, const \hyperlink{classIPvX}{IPvX} \&group\_\-addr, uint16\_\-t group\_\-port, const \hyperlink{classIPvX}{IPvX} \&ifaddr, const vector$<$ uint8\_\-t $>$ \&data, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} data on socket to a given multicast group from a given interface. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpManager_a7304b376934b0224cf98d3aa6743deb4}{set\_\-socket\_\-option} (int family, const string \&sockid, const string \&optname, uint32\_\-t optval, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Set a named socket option with an integer value. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpManager_ad12e395446af94034b3dbffdb733ed7c}{set\_\-socket\_\-option} (int family, const string \&sockid, const string \&optname, const string \&optval, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Set a named socket option with a string value. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpManager_ae6d89ebe8959fa70f44ff741f3160705}{accept\_\-connection} (int family, const string \&sockid, bool is\_\-accepted, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em \hyperlink{classAccept}{Accept} or reject a pending connection. \item\end{DoxyCompactList}\item 
void \hyperlink{classIoTcpUdpManager_a1a6a94b19313f14bf21987ea323d1150}{recv\_\-event} (const string \&receiver\_\-name, const string \&sockid, const string \&if\_\-name, const string \&vif\_\-name, const \hyperlink{classIPvX}{IPvX} \&src\_\-host, uint16\_\-t src\_\-port, const vector$<$ uint8\_\-t $>$ \&data)
\begin{DoxyCompactList}\small\item\em Data received event. \item\end{DoxyCompactList}\item 
void \hyperlink{classIoTcpUdpManager_a3e21b03a34c336982942a3f7e9fe1e55}{inbound\_\-connect\_\-event} (const string \&receiver\_\-name, const string \&sockid, const \hyperlink{classIPvX}{IPvX} \&src\_\-host, uint16\_\-t src\_\-port, const string \&new\_\-sockid)
\begin{DoxyCompactList}\small\item\em Inbound connection request received event. \item\end{DoxyCompactList}\item 
void \hyperlink{classIoTcpUdpManager_a22709890ce442137753860eb8a3b7d74}{outgoing\_\-connect\_\-event} (int family, const string \&receiver\_\-name, const string \&sockid)
\begin{DoxyCompactList}\small\item\em Outgoing connection request completed event. \item\end{DoxyCompactList}\item 
void \hyperlink{classIoTcpUdpManager_a286433719e14a6485c53bc732b8ee99d}{error\_\-event} (int family, const string \&receiver\_\-name, const string \&sockid, const string \&error, bool fatal)
\begin{DoxyCompactList}\small\item\em Error occured event. \item\end{DoxyCompactList}\item 
void \hyperlink{classIoTcpUdpManager_a20ea33ecf2f35f86b46a8e7a9287ab28}{disconnect\_\-event} (int family, const string \&receiver\_\-name, const string \&sockid)
\begin{DoxyCompactList}\small\item\em Connection closed by peer event. \item\end{DoxyCompactList}\item 
void \hyperlink{classIoTcpUdpManager_a942813d2118e46c3af4fb6f248b979fd}{instance\_\-birth} (const string \&instance\_\-name)
\begin{DoxyCompactList}\small\item\em Inform \hyperlink{protocolthe-p}{the} watcher that a component instance is alive. \item\end{DoxyCompactList}\item 
void \hyperlink{classIoTcpUdpManager_a92a4d538a528005c7d370b6ae8ecbd73}{instance\_\-death} (const string \&instance\_\-name)
\begin{DoxyCompactList}\small\item\em Inform \hyperlink{protocolthe-p}{the} watcher that a component instance is dead. \item\end{DoxyCompactList}\item 
\hypertarget{classIoTcpUdpManager_a7319b440db1f1ae98782e6996645c0b3}{
void \hyperlink{classIoTcpUdpManager_a7319b440db1f1ae98782e6996645c0b3}{set\_\-io\_\-tcpudp\_\-manager\_\-receiver} (\hyperlink{classIoTcpUdpManagerReceiver}{IoTcpUdpManagerReceiver} $\ast$v)}
\label{classIoTcpUdpManager_a7319b440db1f1ae98782e6996645c0b3}

\begin{DoxyCompactList}\small\item\em Set \hyperlink{protocolthe-p}{the} instance that is responsible for sending IP packets to a receiver. \item\end{DoxyCompactList}\item 
const \hyperlink{classIfTree}{IfTree} \& \hyperlink{classIoTcpUdpManager_a3945a0c10e27659fd6fae04792094f76}{iftree} () const 
\begin{DoxyCompactList}\small\item\em Get a reference to \hyperlink{protocolthe-p}{the} interface tree. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpManager_ab4f172563407230d82d297971181a0d2}{register\_\-data\_\-plane\_\-manager} (\hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} $\ast$fea\_\-data\_\-plane\_\-manager, bool is\_\-exclusive)
\begin{DoxyCompactList}\small\item\em Register \hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} data plane manager. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpManager_ab9d66104ca0cd52b25c6d0a7c1110772}{unregister\_\-data\_\-plane\_\-manager} (\hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} $\ast$fea\_\-data\_\-plane\_\-manager)
\begin{DoxyCompactList}\small\item\em Unregister \hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} data plane manager. \item\end{DoxyCompactList}\item 
list$<$ \hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} $\ast$ $>$ \& \hyperlink{classIoTcpUdpManager_adfb0124f5bba7edd76fa45d8a608381a}{fea\_\-data\_\-plane\_\-managers} ()
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} list of registered data plane managers. \item\end{DoxyCompactList}\item 
\hyperlink{classIoTcpUdpComm}{IoTcpUdpComm} $\ast$ \hyperlink{classIoTcpUdpManager_a6690c7938e9fd9bb89798f66712e00d4}{connect\_\-io\_\-tcpudp\_\-comm} (int family, bool is\_\-tcp, const string \&creator, const string \&listener\_\-sockid, const \hyperlink{classIPvX}{IPvX} \&peer\_\-host, uint16\_\-t peer\_\-port, \hyperlink{classIoTcpUdp}{IoTcpUdp} $\ast$new\_\-io\_\-tcpudp)
\begin{DoxyCompactList}\small\item\em Connect \hyperlink{classIoTcpUdpComm}{IoTcpUdpComm} entry to a new plugin. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classIoTcpUdpManager_a4f1c615af1dfd4e08392a0302e968162}{
typedef map$<$ string, \hyperlink{classIoTcpUdpComm}{IoTcpUdpComm} $\ast$ $>$ {\bfseries CommTable}}
\label{classIoTcpUdpManager_a4f1c615af1dfd4e08392a0302e968162}

\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{classIoTcpUdpComm}{IoTcpUdpComm} $\ast$ \hyperlink{classIoTcpUdpManager_aeb15e327e2683f2c612a9ee89224b0ad}{find\_\-io\_\-tcpudp\_\-comm} (int family, const string \&sockid, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Find an \hyperlink{classIoTcpUdpComm}{IoTcpUdpComm} entry. \item\end{DoxyCompactList}\item 
\hyperlink{classIoTcpUdpComm}{IoTcpUdpComm} $\ast$ \hyperlink{classIoTcpUdpManager_acfd116e865afd568f34550a4cb2a87b5}{open\_\-io\_\-tcpudp\_\-comm} (int family, bool is\_\-tcp, const string \&creator, bool allocate\_\-plugins=true)
\begin{DoxyCompactList}\small\item\em Create and open \hyperlink{classIoTcpUdpComm}{IoTcpUdpComm} entry. \item\end{DoxyCompactList}\item 
void \hyperlink{classIoTcpUdpManager_a48c4184bca42b57dd583501918126753}{delete\_\-io\_\-tcpudp\_\-comm} (int family, const string \&sockid)
\begin{DoxyCompactList}\small\item\em Delete an existing IoTcpUdoComm entry. \item\end{DoxyCompactList}\item 
CommTable \& \hyperlink{classIoTcpUdpManager_a462a5997d6085b5e4082e0633c58facb}{comm\_\-table\_\-by\_\-family} (int family)
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} CommTable for an address family. \item\end{DoxyCompactList}\item 
void \hyperlink{classIoTcpUdpManager_a5d2dd0b927e549d24d9f013bfbd2d042}{erase\_\-comm\_\-handlers\_\-by\_\-creator} (int family, const string \&creator)
\begin{DoxyCompactList}\small\item\em Erase CommTable handlers for a given creator name. \item\end{DoxyCompactList}\item 
bool \hyperlink{classIoTcpUdpManager_abcd09a8f395fcfd2e24571448f212052}{has\_\-comm\_\-handler\_\-by\_\-creator} (const string \&creator) const 
\begin{DoxyCompactList}\small\item\em Test whether there is a CommTable handler for a given creator name. \item\end{DoxyCompactList}\item 
bool \hyperlink{classIoTcpUdpManager_a21e9cf3c9b01fa67602a17520f5d9e39}{is\_\-my\_\-address} (const \hyperlink{classIPvX}{IPvX} \&local\_\-addr) const 
\begin{DoxyCompactList}\small\item\em Test whether an address belongs to this host. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classIoTcpUdpManager_a5b2d722c19eadf3d624223bdda192911}{
\hyperlink{classFeaNode}{FeaNode} \& {\bfseries \_\-fea\_\-node}}
\label{classIoTcpUdpManager_a5b2d722c19eadf3d624223bdda192911}

\item 
\hypertarget{classIoTcpUdpManager_acdda03a98f5403942f5c5f309debf875}{
\hyperlink{classEventLoop}{EventLoop} \& {\bfseries \_\-eventloop}}
\label{classIoTcpUdpManager_acdda03a98f5403942f5c5f309debf875}

\item 
\hypertarget{classIoTcpUdpManager_a02f80c91327cf23cbaed0207ec938b38}{
const \hyperlink{classIfTree}{IfTree} \& {\bfseries \_\-iftree}}
\label{classIoTcpUdpManager_a02f80c91327cf23cbaed0207ec938b38}

\item 
\hypertarget{classIoTcpUdpManager_a22057d3a9397864fcc79d575a626454e}{
CommTable {\bfseries \_\-comm\_\-table4}}
\label{classIoTcpUdpManager_a22057d3a9397864fcc79d575a626454e}

\item 
\hypertarget{classIoTcpUdpManager_a75e44d6a8e6c87ba13a72b7f37b3e205}{
CommTable {\bfseries \_\-comm\_\-table6}}
\label{classIoTcpUdpManager_a75e44d6a8e6c87ba13a72b7f37b3e205}

\item 
\hypertarget{classIoTcpUdpManager_a8109c398e67e9e1b4f74a6e7d7865c26}{
\hyperlink{classIoTcpUdpManagerReceiver}{IoTcpUdpManagerReceiver} $\ast$ {\bfseries \_\-io\_\-tcpudp\_\-manager\_\-receiver}}
\label{classIoTcpUdpManager_a8109c398e67e9e1b4f74a6e7d7865c26}

\item 
\hypertarget{classIoTcpUdpManager_a087d4bff307203fb8e9c828338588c43}{
list$<$ \hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} $\ast$ $>$ {\bfseries \_\-fea\_\-data\_\-plane\_\-managers}}
\label{classIoTcpUdpManager_a087d4bff307203fb8e9c828338588c43}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
A class that manages I/O TCP/UDP communications. 

\subsection{Member Function Documentation}
\hypertarget{classIoTcpUdpManager_ae6d89ebe8959fa70f44ff741f3160705}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!accept\_\-connection@{accept\_\-connection}}
\index{accept\_\-connection@{accept\_\-connection}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{accept\_\-connection}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpManager::accept\_\-connection (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{sockid, }
\item[{bool}]{is\_\-accepted, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpManager_ae6d89ebe8959fa70f44ff741f3160705}


\hyperlink{classAccept}{Accept} or reject a pending connection. 


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\hline
{\em sockid} & unique socket ID. \\
\hline
{\em is\_\-accepted} & if true, \hyperlink{protocolthe-p}{the} connection is accepted, otherwise is rejected. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_ad70b09e0f6c4f69aaf69fb08addfd6d5}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!bind@{bind}}
\index{bind@{bind}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{bind}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpManager::bind (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{sockid, }
\item[{const {\bf IPvX} \&}]{local\_\-addr, }
\item[{uint16\_\-t}]{local\_\-port, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpManager_ad70b09e0f6c4f69aaf69fb08addfd6d5}


Bind a socket. 


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\hline
{\em sockid} & \hyperlink{protocolthe-p}{the} socket ID of \hyperlink{protocolthe-p}{the} socket to bind. \\
\hline
{\em local\_\-addr} & \hyperlink{protocolthe-p}{the} interface address to bind socket to. \\
\hline
{\em local\_\-port} & \hyperlink{protocolthe-p}{the} port to bind socket to. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_a8de21df8fc759a762a45e29ac4438da4}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!close@{close}}
\index{close@{close}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{close}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpManager::close (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{sockid, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpManager_a8de21df8fc759a762a45e29ac4438da4}


Close socket. 


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\hline
{\em sockid} & unique socket ID of socket to be closed. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_a462a5997d6085b5e4082e0633c58facb}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!comm\_\-table\_\-by\_\-family@{comm\_\-table\_\-by\_\-family}}
\index{comm\_\-table\_\-by\_\-family@{comm\_\-table\_\-by\_\-family}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{comm\_\-table\_\-by\_\-family}]{\setlength{\rightskip}{0pt plus 5cm}IoTcpUdpManager::CommTable \& IoTcpUdpManager::comm\_\-table\_\-by\_\-family (
\begin{DoxyParamCaption}
\item[{int}]{family}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classIoTcpUdpManager_a462a5997d6085b5e4082e0633c58facb}


Get \hyperlink{protocolthe-p}{the} CommTable for an address family. 


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
a reference to \hyperlink{protocolthe-p}{the} CommTable for \hyperlink{protocolthe-p}{the} address family. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_a6690c7938e9fd9bb89798f66712e00d4}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!connect\_\-io\_\-tcpudp\_\-comm@{connect\_\-io\_\-tcpudp\_\-comm}}
\index{connect\_\-io\_\-tcpudp\_\-comm@{connect\_\-io\_\-tcpudp\_\-comm}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{connect\_\-io\_\-tcpudp\_\-comm}]{\setlength{\rightskip}{0pt plus 5cm}{\bf IoTcpUdpComm} $\ast$ IoTcpUdpManager::connect\_\-io\_\-tcpudp\_\-comm (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{bool}]{is\_\-tcp, }
\item[{const string \&}]{creator, }
\item[{const string \&}]{listener\_\-sockid, }
\item[{const {\bf IPvX} \&}]{peer\_\-host, }
\item[{uint16\_\-t}]{peer\_\-port, }
\item[{{\bf IoTcpUdp} $\ast$}]{new\_\-io\_\-tcpudp}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpManager_a6690c7938e9fd9bb89798f66712e00d4}


Connect \hyperlink{classIoTcpUdpComm}{IoTcpUdpComm} entry to a new plugin. 


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family. \\
\hline
{\em is\_\-tcp} & if true this is TCP entry, otherwise UDP. \\
\hline
{\em creator} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} creator. \\
\hline
{\em listener\_\-sockid} & \hyperlink{protocolthe-p}{the} socket ID of \hyperlink{protocolthe-p}{the} listener socket. \\
\hline
{\em peer\_\-host} & \hyperlink{protocolthe-p}{the} peer host IP address. \\
\hline
{\em peer\_\-port} & \hyperlink{protocolthe-p}{the} peer host port number. \\
\hline
{\em new\_\-io\_\-tcpudp} & \hyperlink{protocolthe-p}{the} handler for \hyperlink{protocolthe-p}{the} new connection. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
an entry (\hyperlink{classIoTcpUdpComm}{IoTcpUdpComm}) to handle \hyperlink{protocolthe-p}{the} connection from \hyperlink{protocolthe-p}{the} new plugin. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_a48c4184bca42b57dd583501918126753}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!delete\_\-io\_\-tcpudp\_\-comm@{delete\_\-io\_\-tcpudp\_\-comm}}
\index{delete\_\-io\_\-tcpudp\_\-comm@{delete\_\-io\_\-tcpudp\_\-comm}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{delete\_\-io\_\-tcpudp\_\-comm}]{\setlength{\rightskip}{0pt plus 5cm}void IoTcpUdpManager::delete\_\-io\_\-tcpudp\_\-comm (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{sockid}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classIoTcpUdpManager_a48c4184bca42b57dd583501918126753}


Delete an existing IoTcpUdoComm entry. 


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family. \\
\hline
{\em sockid} & \hyperlink{protocolthe-p}{the} socket ID of \hyperlink{protocolthe-p}{the} entry to delete. \\
\hline
\end{DoxyParams}
\hypertarget{classIoTcpUdpManager_a20ea33ecf2f35f86b46a8e7a9287ab28}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!disconnect\_\-event@{disconnect\_\-event}}
\index{disconnect\_\-event@{disconnect\_\-event}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{disconnect\_\-event}]{\setlength{\rightskip}{0pt plus 5cm}void IoTcpUdpManager::disconnect\_\-event (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{receiver\_\-name, }
\item[{const string \&}]{sockid}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classIoTcpUdpManager_a20ea33ecf2f35f86b46a8e7a9287ab28}


Connection closed by peer event. 

It applies only to TCP sockets. This method is not called if \hyperlink{protocolthe-p}{the} socket is gracefully closed through \hyperlink{classIoTcpUdpManager_a8de21df8fc759a762a45e29ac4438da4}{close()}.


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\hline
{\em receiver\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} receiver to send \hyperlink{protocolthe-p}{the} event to. \\
\hline
{\em sockid} & unique socket ID. \\
\hline
\end{DoxyParams}


Implements \hyperlink{classIoTcpUdpManagerReceiver_aaa32baa0a1bd522108809d9697943c83}{IoTcpUdpManagerReceiver}.

\hypertarget{classIoTcpUdpManager_a5d2dd0b927e549d24d9f013bfbd2d042}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!erase\_\-comm\_\-handlers\_\-by\_\-creator@{erase\_\-comm\_\-handlers\_\-by\_\-creator}}
\index{erase\_\-comm\_\-handlers\_\-by\_\-creator@{erase\_\-comm\_\-handlers\_\-by\_\-creator}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{erase\_\-comm\_\-handlers\_\-by\_\-creator}]{\setlength{\rightskip}{0pt plus 5cm}void IoTcpUdpManager::erase\_\-comm\_\-handlers\_\-by\_\-creator (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{creator}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classIoTcpUdpManager_a5d2dd0b927e549d24d9f013bfbd2d042}


Erase CommTable handlers for a given creator name. 


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family. \\
\hline
{\em creator} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} creator. \\
\hline
\end{DoxyParams}
\hypertarget{classIoTcpUdpManager_a286433719e14a6485c53bc732b8ee99d}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!error\_\-event@{error\_\-event}}
\index{error\_\-event@{error\_\-event}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{error\_\-event}]{\setlength{\rightskip}{0pt plus 5cm}void IoTcpUdpManager::error\_\-event (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{receiver\_\-name, }
\item[{const string \&}]{sockid, }
\item[{const string \&}]{error, }
\item[{bool}]{fatal}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classIoTcpUdpManager_a286433719e14a6485c53bc732b8ee99d}


Error occured event. 


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\hline
{\em receiver\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} receiver to send \hyperlink{protocolthe-p}{the} event to. \\
\hline
{\em sockid} & unique socket ID. \\
\hline
{\em error} & a textual description of \hyperlink{protocolthe-p}{the} error. \\
\hline
{\em fatal} & indication of whether socket is shutdown because of error. \\
\hline
\end{DoxyParams}


Implements \hyperlink{classIoTcpUdpManagerReceiver_a3a628bd3ff67c99150a09c31c7d41b5b}{IoTcpUdpManagerReceiver}.

\hypertarget{classIoTcpUdpManager_adfb0124f5bba7edd76fa45d8a608381a}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!fea\_\-data\_\-plane\_\-managers@{fea\_\-data\_\-plane\_\-managers}}
\index{fea\_\-data\_\-plane\_\-managers@{fea\_\-data\_\-plane\_\-managers}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{fea\_\-data\_\-plane\_\-managers}]{\setlength{\rightskip}{0pt plus 5cm}list$<${\bf FeaDataPlaneManager}$\ast$$>$\& IoTcpUdpManager::fea\_\-data\_\-plane\_\-managers (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoTcpUdpManager_adfb0124f5bba7edd76fa45d8a608381a}


Get \hyperlink{protocolthe-p}{the} list of registered data plane managers. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} list of registered data plane managers. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_aeb15e327e2683f2c612a9ee89224b0ad}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!find\_\-io\_\-tcpudp\_\-comm@{find\_\-io\_\-tcpudp\_\-comm}}
\index{find\_\-io\_\-tcpudp\_\-comm@{find\_\-io\_\-tcpudp\_\-comm}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{find\_\-io\_\-tcpudp\_\-comm}]{\setlength{\rightskip}{0pt plus 5cm}{\bf IoTcpUdpComm} $\ast$ IoTcpUdpManager::find\_\-io\_\-tcpudp\_\-comm (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{sockid, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classIoTcpUdpManager_aeb15e327e2683f2c612a9ee89224b0ad}


Find an \hyperlink{classIoTcpUdpComm}{IoTcpUdpComm} entry. 


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family. \\
\hline
{\em sockid} & \hyperlink{protocolthe-p}{the} socket ID to search for.  \hyperlink{protocolthe-p}{the} \hyperlink{classIoTcpUdpComm}{IoTcpUdpComm} entry if found, otherwise NULL. \\
\hline
\end{DoxyParams}
\hypertarget{classIoTcpUdpManager_abcd09a8f395fcfd2e24571448f212052}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!has\_\-comm\_\-handler\_\-by\_\-creator@{has\_\-comm\_\-handler\_\-by\_\-creator}}
\index{has\_\-comm\_\-handler\_\-by\_\-creator@{has\_\-comm\_\-handler\_\-by\_\-creator}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{has\_\-comm\_\-handler\_\-by\_\-creator}]{\setlength{\rightskip}{0pt plus 5cm}bool IoTcpUdpManager::has\_\-comm\_\-handler\_\-by\_\-creator (
\begin{DoxyParamCaption}
\item[{const string \&}]{creator}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classIoTcpUdpManager_abcd09a8f395fcfd2e24571448f212052}


Test whether there is a CommTable handler for a given creator name. 


\begin{DoxyParams}{Parameters}
{\em creator} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} creator. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if there is a CommTable handler for \hyperlink{protocolthe-p}{the} given creator name, otherwise false. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_a3945a0c10e27659fd6fae04792094f76}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!iftree@{iftree}}
\index{iftree@{iftree}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{iftree}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf IfTree}\& IoTcpUdpManager::iftree (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoTcpUdpManager_a3945a0c10e27659fd6fae04792094f76}


Get a reference to \hyperlink{protocolthe-p}{the} interface tree. 

\begin{DoxyReturn}{Returns}
a reference to \hyperlink{protocolthe-p}{the} interface tree (\hyperlink{classIfTree}{IfTree}). 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_a3e21b03a34c336982942a3f7e9fe1e55}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!inbound\_\-connect\_\-event@{inbound\_\-connect\_\-event}}
\index{inbound\_\-connect\_\-event@{inbound\_\-connect\_\-event}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{inbound\_\-connect\_\-event}]{\setlength{\rightskip}{0pt plus 5cm}void IoTcpUdpManager::inbound\_\-connect\_\-event (
\begin{DoxyParamCaption}
\item[{const string \&}]{receiver\_\-name, }
\item[{const string \&}]{sockid, }
\item[{const {\bf IPvX} \&}]{src\_\-host, }
\item[{uint16\_\-t}]{src\_\-port, }
\item[{const string \&}]{new\_\-sockid}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classIoTcpUdpManager_a3e21b03a34c336982942a3f7e9fe1e55}


Inbound connection request received event. 

It applies only to TCP sockets.


\begin{DoxyParams}{Parameters}
{\em receiver\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} receiver to send \hyperlink{protocolthe-p}{the} event to. \\
\hline
{\em sockid} & unique socket ID. \\
\hline
{\em src\_\-host} & \hyperlink{protocolthe-p}{the} originating host IP address. \\
\hline
{\em src\_\-port} & \hyperlink{protocolthe-p}{the} originating host port number. \\
\hline
{\em new\_\-sockid} & \hyperlink{protocolthe-p}{the} new socket ID. \\
\hline
\end{DoxyParams}


Implements \hyperlink{classIoTcpUdpManagerReceiver_a3b863b02da2736c0fb274b96316d459b}{IoTcpUdpManagerReceiver}.

\hypertarget{classIoTcpUdpManager_a942813d2118e46c3af4fb6f248b979fd}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!instance\_\-birth@{instance\_\-birth}}
\index{instance\_\-birth@{instance\_\-birth}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{instance\_\-birth}]{\setlength{\rightskip}{0pt plus 5cm}void IoTcpUdpManager::instance\_\-birth (
\begin{DoxyParamCaption}
\item[{const string \&}]{instance\_\-name}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classIoTcpUdpManager_a942813d2118e46c3af4fb6f248b979fd}


Inform \hyperlink{protocolthe-p}{the} watcher that a component instance is alive. 


\begin{DoxyParams}{Parameters}
{\em instance\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} instance that is alive. \\
\hline
\end{DoxyParams}


Implements \hyperlink{classInstanceWatcher_a3b06e7ebf696bd290eaead8c03a67852}{InstanceWatcher}.

\hypertarget{classIoTcpUdpManager_a92a4d538a528005c7d370b6ae8ecbd73}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!instance\_\-death@{instance\_\-death}}
\index{instance\_\-death@{instance\_\-death}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{instance\_\-death}]{\setlength{\rightskip}{0pt plus 5cm}void IoTcpUdpManager::instance\_\-death (
\begin{DoxyParamCaption}
\item[{const string \&}]{instance\_\-name}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classIoTcpUdpManager_a92a4d538a528005c7d370b6ae8ecbd73}


Inform \hyperlink{protocolthe-p}{the} watcher that a component instance is dead. 


\begin{DoxyParams}{Parameters}
{\em instance\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} instance that is dead. \\
\hline
\end{DoxyParams}


Implements \hyperlink{classInstanceWatcher_a0c7e95931514afd961ee2123ced8dea1}{InstanceWatcher}.

\hypertarget{classIoTcpUdpManager_a21e9cf3c9b01fa67602a17520f5d9e39}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!is\_\-my\_\-address@{is\_\-my\_\-address}}
\index{is\_\-my\_\-address@{is\_\-my\_\-address}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{is\_\-my\_\-address}]{\setlength{\rightskip}{0pt plus 5cm}bool IoTcpUdpManager::is\_\-my\_\-address (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{local\_\-addr}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classIoTcpUdpManager_a21e9cf3c9b01fa67602a17520f5d9e39}


Test whether an address belongs to this host. 


\begin{DoxyParams}{Parameters}
{\em local\_\-addr} & \hyperlink{protocolthe-p}{the} address to test. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} address belongs to this host, otherwise false. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_acfd116e865afd568f34550a4cb2a87b5}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!open\_\-io\_\-tcpudp\_\-comm@{open\_\-io\_\-tcpudp\_\-comm}}
\index{open\_\-io\_\-tcpudp\_\-comm@{open\_\-io\_\-tcpudp\_\-comm}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{open\_\-io\_\-tcpudp\_\-comm}]{\setlength{\rightskip}{0pt plus 5cm}{\bf IoTcpUdpComm} $\ast$ IoTcpUdpManager::open\_\-io\_\-tcpudp\_\-comm (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{bool}]{is\_\-tcp, }
\item[{const string \&}]{creator, }
\item[{bool}]{allocate\_\-plugins = {\ttfamily true}}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classIoTcpUdpManager_acfd116e865afd568f34550a4cb2a87b5}


Create and open \hyperlink{classIoTcpUdpComm}{IoTcpUdpComm} entry. 


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family. \\
\hline
{\em is\_\-tcp} & if true this is TCP entry, otherwise UDP. \\
\hline
{\em creator} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} creator. \\
\hline
{\em allocate\_\-plugins} & if true, then allocate \hyperlink{protocolthe-p}{the} plugin handler(s) internally, otherwise they will be explicitly added externally. \\
\hline
\end{DoxyParams}
\hypertarget{classIoTcpUdpManager_a22709890ce442137753860eb8a3b7d74}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!outgoing\_\-connect\_\-event@{outgoing\_\-connect\_\-event}}
\index{outgoing\_\-connect\_\-event@{outgoing\_\-connect\_\-event}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{outgoing\_\-connect\_\-event}]{\setlength{\rightskip}{0pt plus 5cm}void IoTcpUdpManager::outgoing\_\-connect\_\-event (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{receiver\_\-name, }
\item[{const string \&}]{sockid}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classIoTcpUdpManager_a22709890ce442137753860eb8a3b7d74}


Outgoing connection request completed event. 

It applies only to TCP sockets.


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\hline
{\em receiver\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} receiver to send \hyperlink{protocolthe-p}{the} event to. \\
\hline
{\em sockid} & unique socket ID. \\
\hline
\end{DoxyParams}


Implements \hyperlink{classIoTcpUdpManagerReceiver_a886bd76cc1f50d9e110edc74d7dbabb4}{IoTcpUdpManagerReceiver}.

\hypertarget{classIoTcpUdpManager_a1a6a94b19313f14bf21987ea323d1150}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!recv\_\-event@{recv\_\-event}}
\index{recv\_\-event@{recv\_\-event}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{recv\_\-event}]{\setlength{\rightskip}{0pt plus 5cm}void IoTcpUdpManager::recv\_\-event (
\begin{DoxyParamCaption}
\item[{const string \&}]{receiver\_\-name, }
\item[{const string \&}]{sockid, }
\item[{const string \&}]{if\_\-name, }
\item[{const string \&}]{vif\_\-name, }
\item[{const {\bf IPvX} \&}]{src\_\-host, }
\item[{uint16\_\-t}]{src\_\-port, }
\item[{const vector$<$ uint8\_\-t $>$ \&}]{data}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classIoTcpUdpManager_a1a6a94b19313f14bf21987ea323d1150}


Data received event. 


\begin{DoxyParams}{Parameters}
{\em receiver\_\-name} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} receiver to send \hyperlink{protocolthe-p}{the} data to. \\
\hline
{\em sockid} & unique socket ID. \\
\hline
{\em if\_\-name} & \hyperlink{protocolthe-p}{the} interface name \hyperlink{protocolthe-p}{the} packet arrived on, if known. If unknown, then it is an empty string. \\
\hline
{\em vif\_\-name} & \hyperlink{protocolthe-p}{the} vif name \hyperlink{protocolthe-p}{the} packet arrived on, if known. If unknown, then it is an empty string. \\
\hline
{\em src\_\-host} & \hyperlink{protocolthe-p}{the} originating host IP address. \\
\hline
{\em src\_\-port} & \hyperlink{protocolthe-p}{the} originating host port number. \\
\hline
{\em data} & \hyperlink{protocolthe-p}{the} data received. \\
\hline
\end{DoxyParams}


Implements \hyperlink{classIoTcpUdpManagerReceiver_abc480fa3e24d6b7aa7a94fdbf65506a8}{IoTcpUdpManagerReceiver}.

\hypertarget{classIoTcpUdpManager_ab4f172563407230d82d297971181a0d2}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!register\_\-data\_\-plane\_\-manager@{register\_\-data\_\-plane\_\-manager}}
\index{register\_\-data\_\-plane\_\-manager@{register\_\-data\_\-plane\_\-manager}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{register\_\-data\_\-plane\_\-manager}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpManager::register\_\-data\_\-plane\_\-manager (
\begin{DoxyParamCaption}
\item[{{\bf FeaDataPlaneManager} $\ast$}]{fea\_\-data\_\-plane\_\-manager, }
\item[{bool}]{is\_\-exclusive}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpManager_ab4f172563407230d82d297971181a0d2}


Register \hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} data plane manager. 


\begin{DoxyParams}{Parameters}
{\em fea\_\-data\_\-plane\_\-manager} & \hyperlink{protocolthe-p}{the} data plane manager to register. \\
\hline
{\em is\_\-exclusive} & if true, \hyperlink{protocolthe-p}{the} manager is registered as \hyperlink{protocolthe-p}{the} exclusive manager, otherwise is added to \hyperlink{protocolthe-p}{the} list of managers. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_abbe504cd19ae49c6304d20666471f644}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!send@{send}}
\index{send@{send}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{send}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpManager::send (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{sockid, }
\item[{const vector$<$ uint8\_\-t $>$ \&}]{data, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpManager_abbe504cd19ae49c6304d20666471f644}


\hyperlink{structSend}{Send} data on socket. 


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\hline
{\em sockid} & unique socket ID. \\
\hline
{\em data} & block of data to be sent. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_a84c1ff6002dc951fff4dd3bc44e5e187}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!send\_\-from\_\-multicast\_\-if@{send\_\-from\_\-multicast\_\-if}}
\index{send\_\-from\_\-multicast\_\-if@{send\_\-from\_\-multicast\_\-if}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{send\_\-from\_\-multicast\_\-if}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpManager::send\_\-from\_\-multicast\_\-if (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{sockid, }
\item[{const {\bf IPvX} \&}]{group\_\-addr, }
\item[{uint16\_\-t}]{group\_\-port, }
\item[{const {\bf IPvX} \&}]{ifaddr, }
\item[{const vector$<$ uint8\_\-t $>$ \&}]{data, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpManager_a84c1ff6002dc951fff4dd3bc44e5e187}


\hyperlink{structSend}{Send} data on socket to a given multicast group from a given interface. 


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\hline
{\em sockid} & unique socket ID. \\
\hline
{\em group\_\-addr} & destination address for data. \\
\hline
{\em group\_\-port} & destination port for data. \\
\hline
{\em ifaddr} & interface address. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_aacc5bfb677fdb4722213276632b2034a}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!send\_\-to@{send\_\-to}}
\index{send\_\-to@{send\_\-to}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{send\_\-to}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpManager::send\_\-to (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{sockid, }
\item[{const {\bf IPvX} \&}]{remote\_\-addr, }
\item[{uint16\_\-t}]{remote\_\-port, }
\item[{const vector$<$ uint8\_\-t $>$ \&}]{data, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpManager_aacc5bfb677fdb4722213276632b2034a}


\hyperlink{structSend}{Send} data on socket to a given destination. 

The packet is not routed as \hyperlink{protocolthe-p}{the} forwarding engine sending \hyperlink{protocolthe-p}{the} packet may not have access to \hyperlink{protocolthe-p}{the} full routing table.


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\hline
{\em sockid} & unique socket ID. \\
\hline
{\em remote\_\-addr} & destination address for data. \\
\hline
{\em remote\_\-port} & destination port for data. \\
\hline
{\em data} & block of data to be sent. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_ad12e395446af94034b3dbffdb733ed7c}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!set\_\-socket\_\-option@{set\_\-socket\_\-option}}
\index{set\_\-socket\_\-option@{set\_\-socket\_\-option}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{set\_\-socket\_\-option}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpManager::set\_\-socket\_\-option (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{sockid, }
\item[{const string \&}]{optname, }
\item[{const string \&}]{optval, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpManager_ad12e395446af94034b3dbffdb733ed7c}


Set a named socket option with a string value. 


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\hline
{\em sockid} & unique socket ID. \\
\hline
{\em optname} & name of option to be set. Valid values are: \char`\"{}bindtodevice\char`\"{} \\
\hline
{\em optval} & value of option to be set. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_a7304b376934b0224cf98d3aa6743deb4}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!set\_\-socket\_\-option@{set\_\-socket\_\-option}}
\index{set\_\-socket\_\-option@{set\_\-socket\_\-option}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{set\_\-socket\_\-option}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpManager::set\_\-socket\_\-option (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{sockid, }
\item[{const string \&}]{optname, }
\item[{uint32\_\-t}]{optval, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpManager_a7304b376934b0224cf98d3aa6743deb4}


Set a named socket option with an integer value. 


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\hline
{\em sockid} & unique socket ID. \\
\hline
{\em optname} & name of option to be set. Valid values are: \char`\"{}onesbcast\char`\"{} \char`\"{}receive\_\-broadcast\char`\"{} \char`\"{}reuseport\char`\"{} \char`\"{}send\_\-broadcast\char`\"{} \char`\"{}tos\char`\"{} \char`\"{}ttl\char`\"{} \char`\"{}multicast\_\-loopback\char`\"{} \char`\"{}multicast\_\-ttl\char`\"{} \\
\hline
{\em optval} & value of option to be set. If value is logically boolean then zero represents false and any non-\/zero value true. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_aee31b84eafa206f8807fb06ae967a70b}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!tcp\_\-listen@{tcp\_\-listen}}
\index{tcp\_\-listen@{tcp\_\-listen}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{tcp\_\-listen}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpManager::tcp\_\-listen (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{sockid, }
\item[{uint32\_\-t}]{backlog, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpManager_aee31b84eafa206f8807fb06ae967a70b}


Listen for inbound connections on socket. 

When a connection request is received \hyperlink{protocolthe-p}{the} socket creator will receive notification.


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\hline
{\em sockid} & \hyperlink{protocolthe-p}{the} unique socket ID of \hyperlink{protocolthe-p}{the} socket to perform listen. \\
\hline
{\em backlog} & \hyperlink{protocolthe-p}{the} maximum number of pending connections. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_add75cfd99fdc32a0424a9321ae84f686}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!tcp\_\-open@{tcp\_\-open}}
\index{tcp\_\-open@{tcp\_\-open}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{tcp\_\-open}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpManager::tcp\_\-open (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{creator, }
\item[{string \&}]{sockid, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpManager_add75cfd99fdc32a0424a9321ae84f686}


Open a TCP socket. 


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\hline
{\em creator} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} socket creator. \\
\hline
{\em sockid} & return parameter that contains unique socket ID when socket instantiation is successful. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_ab6a302bd1aac4c31b32a7e64e4171d10}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!tcp\_\-open\_\-and\_\-bind@{tcp\_\-open\_\-and\_\-bind}}
\index{tcp\_\-open\_\-and\_\-bind@{tcp\_\-open\_\-and\_\-bind}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{tcp\_\-open\_\-and\_\-bind}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpManager::tcp\_\-open\_\-and\_\-bind (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{creator, }
\item[{const {\bf IPvX} \&}]{local\_\-addr, }
\item[{uint16\_\-t}]{local\_\-port, }
\item[{string \&}]{sockid, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpManager_ab6a302bd1aac4c31b32a7e64e4171d10}


Create a bound TCP socket. 


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\hline
{\em creator} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} socket creator. \\
\hline
{\em local\_\-addr} & \hyperlink{protocolthe-p}{the} interface address to bind socket to. \\
\hline
{\em local\_\-port} & \hyperlink{protocolthe-p}{the} port to bind socket to. \\
\hline
{\em sockid} & return parameter that contains unique socket ID when socket instantiation is successful. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_a4f60bc5783f79849b5bce780300bb125}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!tcp\_\-open\_\-bind\_\-connect@{tcp\_\-open\_\-bind\_\-connect}}
\index{tcp\_\-open\_\-bind\_\-connect@{tcp\_\-open\_\-bind\_\-connect}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{tcp\_\-open\_\-bind\_\-connect}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpManager::tcp\_\-open\_\-bind\_\-connect (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{creator, }
\item[{const {\bf IPvX} \&}]{local\_\-addr, }
\item[{uint16\_\-t}]{local\_\-port, }
\item[{const {\bf IPvX} \&}]{remote\_\-addr, }
\item[{uint16\_\-t}]{remote\_\-port, }
\item[{string \&}]{sockid, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpManager_a4f60bc5783f79849b5bce780300bb125}


Create a bound and connected TCP socket. 


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\hline
{\em creator} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} socket creator. \\
\hline
{\em local\_\-addr} & \hyperlink{protocolthe-p}{the} interface address to bind socket to. \\
\hline
{\em local\_\-port} & \hyperlink{protocolthe-p}{the} port to bind socket to. \\
\hline
{\em remote\_\-addr} & \hyperlink{protocolthe-p}{the} address to connect to. \\
\hline
{\em remote\_\-port} & \hyperlink{protocolthe-p}{the} remote port to connect to. \\
\hline
{\em sockid} & return parameter that contains unique socket ID when socket instantiation is successful. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_a15e52a3c65f13f583a2b16b74a118fd8}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!udp\_\-enable\_\-recv@{udp\_\-enable\_\-recv}}
\index{udp\_\-enable\_\-recv@{udp\_\-enable\_\-recv}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{udp\_\-enable\_\-recv}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpManager::udp\_\-enable\_\-recv (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{sockid, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpManager_a15e52a3c65f13f583a2b16b74a118fd8}


Enable a UDP socket for datagram reception. 


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\hline
{\em sockid} & \hyperlink{protocolthe-p}{the} unique socket ID of \hyperlink{protocolthe-p}{the} socket to enable datagram reception for. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_a95457950461bd6aaba29c9d7cd562353}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!udp\_\-join\_\-group@{udp\_\-join\_\-group}}
\index{udp\_\-join\_\-group@{udp\_\-join\_\-group}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{udp\_\-join\_\-group}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpManager::udp\_\-join\_\-group (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{sockid, }
\item[{const {\bf IPvX} \&}]{mcast\_\-addr, }
\item[{const {\bf IPvX} \&}]{join\_\-if\_\-addr, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpManager_a95457950461bd6aaba29c9d7cd562353}


Join multicast group on already bound socket. 


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\hline
{\em sockid} & unique socket ID. \\
\hline
{\em mcast\_\-addr} & group to join. \\
\hline
{\em join\_\-if\_\-addr} & interface address to perform join on. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_a08f31dcd2295d5ba1f06c7eebe999378}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!udp\_\-leave\_\-group@{udp\_\-leave\_\-group}}
\index{udp\_\-leave\_\-group@{udp\_\-leave\_\-group}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{udp\_\-leave\_\-group}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpManager::udp\_\-leave\_\-group (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{sockid, }
\item[{const {\bf IPvX} \&}]{mcast\_\-addr, }
\item[{const {\bf IPvX} \&}]{leave\_\-if\_\-addr, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpManager_a08f31dcd2295d5ba1f06c7eebe999378}


Leave multicast group on already bound socket. 


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\hline
{\em sockid} & unique socket ID. \\
\hline
{\em mcast\_\-addr} & group to leave. \\
\hline
{\em leave\_\-if\_\-addr} & interface address to perform leave on. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_a142661489bbefb5906b505e2f86ffb6a}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!udp\_\-open@{udp\_\-open}}
\index{udp\_\-open@{udp\_\-open}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{udp\_\-open}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpManager::udp\_\-open (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{creator, }
\item[{string \&}]{sockid, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpManager_a142661489bbefb5906b505e2f86ffb6a}


Open an UDP socket. 


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\hline
{\em creator} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} socket creator. \\
\hline
{\em sockid} & return parameter that contains unique socket ID when socket instantiation is successful. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_a441e110ddcb58ea5b6a96e58eb6a0740}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!udp\_\-open\_\-and\_\-bind@{udp\_\-open\_\-and\_\-bind}}
\index{udp\_\-open\_\-and\_\-bind@{udp\_\-open\_\-and\_\-bind}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{udp\_\-open\_\-and\_\-bind}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpManager::udp\_\-open\_\-and\_\-bind (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{creator, }
\item[{const {\bf IPvX} \&}]{local\_\-addr, }
\item[{uint16\_\-t}]{local\_\-port, }
\item[{const string \&}]{local\_\-dev, }
\item[{int}]{reuse, }
\item[{string \&}]{sockid, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpManager_a441e110ddcb58ea5b6a96e58eb6a0740}


Create a bound UDP socket. 


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\hline
{\em creator} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} socket creator. \\
\hline
{\em local\_\-addr} & \hyperlink{protocolthe-p}{the} interface address to bind socket to. \\
\hline
{\em local\_\-port} & \hyperlink{protocolthe-p}{the} port to bind socket to. \\
\hline
{\em sockid} & return parameter that contains unique socket ID when socket instantiation is successful. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_a9d6df78754d54a3dd3b6b7423f749075}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!udp\_\-open\_\-bind\_\-broadcast@{udp\_\-open\_\-bind\_\-broadcast}}
\index{udp\_\-open\_\-bind\_\-broadcast@{udp\_\-open\_\-bind\_\-broadcast}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{udp\_\-open\_\-bind\_\-broadcast}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpManager::udp\_\-open\_\-bind\_\-broadcast (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{creator, }
\item[{const string \&}]{ifname, }
\item[{const string \&}]{vifname, }
\item[{uint16\_\-t}]{local\_\-port, }
\item[{uint16\_\-t}]{remote\_\-port, }
\item[{bool}]{reuse, }
\item[{bool}]{limited, }
\item[{bool}]{connected, }
\item[{string \&}]{sockid, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpManager_a9d6df78754d54a3dd3b6b7423f749075}


Create a bound and connected UDP broadcast socket. 


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\hline
{\em creator} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} socket creator. \\
\hline
{\em ifname} & \hyperlink{protocolthe-p}{the} interface name to bind socket to. \\
\hline
{\em vifname} & \hyperlink{protocolthe-p}{the} vif to bind socket to. \\
\hline
{\em local\_\-port} & \hyperlink{protocolthe-p}{the} port to bind socket to. \\
\hline
{\em remote\_\-port} & \hyperlink{protocolthe-p}{the} remote port to connect to. \\
\hline
{\em reuse} & allow other sockets to bind to same port. \\
\hline
{\em limited} & set \hyperlink{protocolthe-p}{the} socket up for transmission to \hyperlink{protocolthe-p}{the} limited broadcast address 255.255.255.255. \\
\hline
{\em connected} & connect \hyperlink{protocolthe-p}{the} socket for use with \hyperlink{classIoTcpUdpManager_abbe504cd19ae49c6304d20666471f644}{send()} not sendto(). \\
\hline
{\em sockid} & return parameter that contains unique socket ID when socket instantiation is successful. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_a8171ad660081f061d6b4efb7689258db}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!udp\_\-open\_\-bind\_\-connect@{udp\_\-open\_\-bind\_\-connect}}
\index{udp\_\-open\_\-bind\_\-connect@{udp\_\-open\_\-bind\_\-connect}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{udp\_\-open\_\-bind\_\-connect}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpManager::udp\_\-open\_\-bind\_\-connect (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{creator, }
\item[{const {\bf IPvX} \&}]{local\_\-addr, }
\item[{uint16\_\-t}]{local\_\-port, }
\item[{const {\bf IPvX} \&}]{remote\_\-addr, }
\item[{uint16\_\-t}]{remote\_\-port, }
\item[{string \&}]{sockid, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpManager_a8171ad660081f061d6b4efb7689258db}


Create a bound and connected UDP socket. 


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\hline
{\em creator} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} socket creator. \\
\hline
{\em local\_\-addr} & \hyperlink{protocolthe-p}{the} interface address to bind socket to. \\
\hline
{\em local\_\-port} & \hyperlink{protocolthe-p}{the} port to bind socket to. \\
\hline
{\em remote\_\-addr} & \hyperlink{protocolthe-p}{the} address to connect to. \\
\hline
{\em remote\_\-port} & \hyperlink{protocolthe-p}{the} remote port to connect to. \\
\hline
{\em sockid} & return parameter that contains unique socket ID when socket instantiation is successful. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_a5403032a1304a632875d35e35c5990aa}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!udp\_\-open\_\-bind\_\-join@{udp\_\-open\_\-bind\_\-join}}
\index{udp\_\-open\_\-bind\_\-join@{udp\_\-open\_\-bind\_\-join}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{udp\_\-open\_\-bind\_\-join}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpManager::udp\_\-open\_\-bind\_\-join (
\begin{DoxyParamCaption}
\item[{int}]{family, }
\item[{const string \&}]{creator, }
\item[{const {\bf IPvX} \&}]{local\_\-addr, }
\item[{uint16\_\-t}]{local\_\-port, }
\item[{const {\bf IPvX} \&}]{mcast\_\-addr, }
\item[{uint8\_\-t}]{ttl, }
\item[{bool}]{reuse, }
\item[{string \&}]{sockid, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpManager_a5403032a1304a632875d35e35c5990aa}


Create a bound UDP multicast socket. 


\begin{DoxyParams}{Parameters}
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\hline
{\em creator} & \hyperlink{protocolthe-p}{the} name of \hyperlink{protocolthe-p}{the} socket creator. \\
\hline
{\em local\_\-addr} & \hyperlink{protocolthe-p}{the} interface address to bind socket to. \\
\hline
{\em local\_\-port} & \hyperlink{protocolthe-p}{the} port to bind socket to. \\
\hline
{\em mcast\_\-addr} & \hyperlink{protocolthe-p}{the} multicast group address to join. \\
\hline
{\em ttl} & \hyperlink{protocolthe-p}{the} TTL to use for this multicast socket. \\
\hline
{\em reuse} & allow other sockets to bind to same multicast group. \\
\hline
{\em sockid} & return parameter that contains unique socket ID when socket instantiation is successful. \\
\hline
{\em error\_\-msg} & \hyperlink{protocolthe-p}{the} error message (if error). \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpManager_ab9d66104ca0cd52b25c6d0a7c1110772}{
\index{IoTcpUdpManager@{IoTcpUdpManager}!unregister\_\-data\_\-plane\_\-manager@{unregister\_\-data\_\-plane\_\-manager}}
\index{unregister\_\-data\_\-plane\_\-manager@{unregister\_\-data\_\-plane\_\-manager}!IoTcpUdpManager@{IoTcpUdpManager}}
\subsubsection[{unregister\_\-data\_\-plane\_\-manager}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpManager::unregister\_\-data\_\-plane\_\-manager (
\begin{DoxyParamCaption}
\item[{{\bf FeaDataPlaneManager} $\ast$}]{fea\_\-data\_\-plane\_\-manager}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpManager_ab9d66104ca0cd52b25c6d0a7c1110772}


Unregister \hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} data plane manager. 


\begin{DoxyParams}{Parameters}
{\em fea\_\-data\_\-plane\_\-manager} & \hyperlink{protocolthe-p}{the} data plane manager to unregister. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


The documentation for this class was generated from the following files:\begin{DoxyCompactItemize}
\item 
/home/greearb/git/xorp.ct.github/xorp/fea/io\_\-tcpudp\_\-manager.hh\item 
/home/greearb/git/xorp.ct.github/xorp/fea/io\_\-tcpudp\_\-manager.cc\end{DoxyCompactItemize}
