\hypertarget{classIoTcpUdpComm}{
\section{IoTcpUdpComm Class Reference}
\label{classIoTcpUdpComm}\index{IoTcpUdpComm@{IoTcpUdpComm}}
}


A class that handles I/O TCP/UDP communication.  




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

Inheritance diagram for IoTcpUdpComm:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{classIoTcpUdpComm}
\end{center}
\end{figure}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
class \hyperlink{classIoTcpUdpComm_1_1JoinedMulticastGroup}{JoinedMulticastGroup}
\begin{DoxyCompactList}\small\item\em Joined multicast group class. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{classIoTcpUdpComm_abec7d2f4138beddf4232db703d3e6ac5}{IoTcpUdpComm} (\hyperlink{classIoTcpUdpManager}{IoTcpUdpManager} \&io\_\-tcpudp\_\-manager, const \hyperlink{classIfTree}{IfTree} \&iftree, int family, bool is\_\-tcp, const string \&creator)
\begin{DoxyCompactList}\small\item\em Constructor for \hyperlink{classIoTcpUdpComm}{IoTcpUdpComm}. \item\end{DoxyCompactList}\item 
\hyperlink{classIoTcpUdpComm_a7d5d122c54f4f96f71bf16919b274bf9}{IoTcpUdpComm} (\hyperlink{classIoTcpUdpManager}{IoTcpUdpManager} \&io\_\-tcpudp\_\-manager, const \hyperlink{classIfTree}{IfTree} \&iftree, int family, bool is\_\-tcp, const string \&creator, const string \&listener\_\-sockid, const \hyperlink{classIPvX}{IPvX} \&peer\_\-host, uint16\_\-t peer\_\-port)
\begin{DoxyCompactList}\small\item\em Constructor for connected \hyperlink{classIoTcpUdpComm}{IoTcpUdpComm}. \item\end{DoxyCompactList}\item 
\hypertarget{classIoTcpUdpComm_a89a8bc1e901f4347af37b8903319bc78}{
virtual \hyperlink{classIoTcpUdpComm_a89a8bc1e901f4347af37b8903319bc78}{$\sim$IoTcpUdpComm} ()}
\label{classIoTcpUdpComm_a89a8bc1e901f4347af37b8903319bc78}

\begin{DoxyCompactList}\small\item\em Virtual destructor. \item\end{DoxyCompactList}\item 
\hypertarget{classIoTcpUdpComm_a399bdd8f5f996293cbee8a0db83c1cac}{
void \hyperlink{classIoTcpUdpComm_a399bdd8f5f996293cbee8a0db83c1cac}{allocate\_\-io\_\-tcpudp\_\-plugins} ()}
\label{classIoTcpUdpComm_a399bdd8f5f996293cbee8a0db83c1cac}

\begin{DoxyCompactList}\small\item\em Allocate \hyperlink{protocolthe-p}{the} I/O TCP/UDP plugins (one per data plane manager). \item\end{DoxyCompactList}\item 
\hypertarget{classIoTcpUdpComm_a81b9588efa2e37faf8a852f7a7e59f17}{
void \hyperlink{classIoTcpUdpComm_a81b9588efa2e37faf8a852f7a7e59f17}{deallocate\_\-io\_\-tcpudp\_\-plugins} ()}
\label{classIoTcpUdpComm_a81b9588efa2e37faf8a852f7a7e59f17}

\begin{DoxyCompactList}\small\item\em Deallocate \hyperlink{protocolthe-p}{the} I/O TCP/UDP plugins (one per data plane manager). \item\end{DoxyCompactList}\item 
void \hyperlink{classIoTcpUdpComm_a7d0857abf3644530bc8ba31b6c264cf8}{allocate\_\-io\_\-tcpudp\_\-plugin} (\hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} $\ast$fea\_\-data\_\-plane\_\-manager)
\begin{DoxyCompactList}\small\item\em Allocate an I/O TCP/UDP plugin for a given data plane manager. \item\end{DoxyCompactList}\item 
void \hyperlink{classIoTcpUdpComm_aba5599489dcbdba1b9a88e3bb2cea993}{deallocate\_\-io\_\-tcpudp\_\-plugin} (\hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} $\ast$fea\_\-data\_\-plane\_\-manager)
\begin{DoxyCompactList}\small\item\em Deallocate \hyperlink{protocolthe-p}{the} I/O TCP/UDP plugin for a given data plane manager. \item\end{DoxyCompactList}\item 
void \hyperlink{classIoTcpUdpComm_a67a7aaaf33323e3b77aea86b2b235f09}{add\_\-plugin} (\hyperlink{classIoTcpUdp}{IoTcpUdp} $\ast$new\_\-io\_\-tcpudp)
\begin{DoxyCompactList}\small\item\em Add a pre-\/allocated I/O TCP/UDP plugin. \item\end{DoxyCompactList}\item 
\hypertarget{classIoTcpUdpComm_a0353a508cefbab66328a7bfbe31c5460}{
void \hyperlink{classIoTcpUdpComm_a0353a508cefbab66328a7bfbe31c5460}{start\_\-io\_\-tcpudp\_\-plugins} ()}
\label{classIoTcpUdpComm_a0353a508cefbab66328a7bfbe31c5460}

\begin{DoxyCompactList}\small\item\em Start all I/O TCP/UDP plugins. \item\end{DoxyCompactList}\item 
\hypertarget{classIoTcpUdpComm_aa88907a43232fe43305633946e7c33c0}{
void \hyperlink{classIoTcpUdpComm_aa88907a43232fe43305633946e7c33c0}{stop\_\-io\_\-tcpudp\_\-plugins} ()}
\label{classIoTcpUdpComm_aa88907a43232fe43305633946e7c33c0}

\begin{DoxyCompactList}\small\item\em Stop all I/O TCP/UDP plugins. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpComm_a727d7f4235df6a06d4058ac7b02abdad}{tcp\_\-open} (string \&sockid, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Open a TCP socket. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpComm_ada2a62692beae7468944228c00fa7849}{udp\_\-open} (string \&sockid, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Open an UDP socket. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpComm_ae1235de60c417a908ac31e6b8c5572cc}{tcp\_\-open\_\-and\_\-bind} (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{classIoTcpUdpComm_a8a389358e1df0bb461a73512aa8dddc0}{udp\_\-open\_\-and\_\-bind} (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{classIoTcpUdpComm_a7ff7f6922418ad9786b037351af71d38}{udp\_\-open\_\-bind\_\-join} (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{classIoTcpUdpComm_a03fbb96f883b15f4d72720fc74173c60}{tcp\_\-open\_\-bind\_\-connect} (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{classIoTcpUdpComm_a4f947abef20011dbd7da04ea266f5424}{udp\_\-open\_\-bind\_\-connect} (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{classIoTcpUdpComm_af6b05137de57054c737b3c7b6dbf365e}{udp\_\-open\_\-bind\_\-broadcast} (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 optionally connected, UDP broadcast socket. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpComm_a97f42935ef90406825feeb582f3e72f3}{bind} (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{classIoTcpUdpComm_a87cbfe5f1b13591c3dfcf79cd4ac1ad5}{udp\_\-join\_\-group} (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{classIoTcpUdpComm_a89f571b484bd99df2b84e01d0077f3d0}{udp\_\-leave\_\-group} (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{classIoTcpUdpComm_a985ec5791dddc7ef31ee03834e5182b6}{close} (string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Close socket. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpComm_a84dd6d2868fcca62ff8705e42dce13aa}{tcp\_\-listen} (uint32\_\-t backlog, string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Listen for inbound connections on socket. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpComm_a41f86547b2dac549a500d073566b1d51}{udp\_\-enable\_\-recv} (string \&error\_\-msg)
\begin{DoxyCompactList}\small\item\em Enable a UDP socket for datagram reception. \item\end{DoxyCompactList}\item 
int \hyperlink{classIoTcpUdpComm_a9dedeb51b881b603bb8317bceff2b254}{send} (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{classIoTcpUdpComm_a7f633b5ec582361fea7ec1b8ff4b9a26}{send\_\-to} (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{classIoTcpUdpComm_a9f2d9daf98f8516d0353d3ea2598101c}{send\_\-from\_\-multicast\_\-if} (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{classIoTcpUdpComm_aff9896193cc49eaac45e96dc6aba461d}{set\_\-socket\_\-option} (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{classIoTcpUdpComm_ad396186d4f11cc1a9dd094b24549b3e8}{set\_\-socket\_\-option} (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{classIoTcpUdpComm_aaa862da6344c13c59420f7ec736ca615}{accept\_\-connection} (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{classIoTcpUdpComm_a8fc255e5658e0eaa7e750b4769012cfd}{recv\_\-event} (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{classIoTcpUdpComm_a134a7bbd183061806f306e883e4689b5}{inbound\_\-connect\_\-event} (const \hyperlink{classIPvX}{IPvX} \&src\_\-host, uint16\_\-t src\_\-port, \hyperlink{classIoTcpUdp}{IoTcpUdp} $\ast$new\_\-io\_\-tcpudp)
\begin{DoxyCompactList}\small\item\em Inbound connection request received event. \item\end{DoxyCompactList}\item 
void \hyperlink{classIoTcpUdpComm_a28cfe54607722b0e4a81f2d72b638249}{outgoing\_\-connect\_\-event} ()
\begin{DoxyCompactList}\small\item\em Outgoing connection request completed event. \item\end{DoxyCompactList}\item 
void \hyperlink{classIoTcpUdpComm_ad92362e78e7487ef1a4f9c43229738bd}{error\_\-event} (const string \&error, bool fatal)
\begin{DoxyCompactList}\small\item\em Error occured event. \item\end{DoxyCompactList}\item 
void \hyperlink{classIoTcpUdpComm_a6e4841d82846582d4fd5cd4d41b3220f}{disconnect\_\-event} ()
\begin{DoxyCompactList}\small\item\em Connection closed by peer event. \item\end{DoxyCompactList}\item 
const string \& \hyperlink{classIoTcpUdpComm_afed706234052fce99b1ff70d50a4f874}{creator} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} creator name. \item\end{DoxyCompactList}\item 
const string \& \hyperlink{classIoTcpUdpComm_af7256d5ef077c50f04a7d8b83367da40}{sockid} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} socket ID. \item\end{DoxyCompactList}\item 
const string \& \hyperlink{classIoTcpUdpComm_aa7959b2940c4dac2726d5f6d9e848ad5}{listener\_\-sockid} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} listener socket ID. \item\end{DoxyCompactList}\item 
const \hyperlink{classIPvX}{IPvX} \& \hyperlink{classIoTcpUdpComm_a6f544457c524192f52ec2f1a4224d075}{peer\_\-host} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} peer host IP address. \item\end{DoxyCompactList}\item 
uint16\_\-t \hyperlink{classIoTcpUdpComm_a466e3beea2b2bc5f20d9829795aa3559}{peer\_\-port} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} peer host port number. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Types}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classIoTcpUdpComm_a0225e26ad6b16fcfe4589583f7c31ec6}{
typedef list$<$ pair$<$ \hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} $\ast$, \hyperlink{classIoTcpUdp}{IoTcpUdp} $\ast$ $>$ $>$ {\bfseries IoTcpUdpPlugins}}
\label{classIoTcpUdpComm_a0225e26ad6b16fcfe4589583f7c31ec6}

\item 
\hypertarget{classIoTcpUdpComm_a4f6007dfafe2bd347a36c6a713164e5c}{
typedef map$<$ \hyperlink{classIoTcpUdpComm_1_1JoinedMulticastGroup}{JoinedMulticastGroup}, \hyperlink{classIoTcpUdpComm_1_1JoinedMulticastGroup}{JoinedMulticastGroup} $>$ {\bfseries JoinedGroupsTable}}
\label{classIoTcpUdpComm_a4f6007dfafe2bd347a36c6a713164e5c}

\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classIoTcpUdpComm_a6571829f3964057992a74de252c54307}{
{\bfseries IoTcpUdpComm} (const \hyperlink{classIoTcpUdpComm}{IoTcpUdpComm} \&)}
\label{classIoTcpUdpComm_a6571829f3964057992a74de252c54307}

\item 
\hypertarget{classIoTcpUdpComm_af843f061bf0e079e8c1744a3fbdb9bf5}{
\hyperlink{classIoTcpUdpComm}{IoTcpUdpComm} \& {\bfseries operator=} (const \hyperlink{classIoTcpUdpComm}{IoTcpUdpComm} \&)}
\label{classIoTcpUdpComm_af843f061bf0e079e8c1744a3fbdb9bf5}

\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classIoTcpUdpComm_aba32b6b2b0ee80a3bc898c26a959a9d3}{
\hyperlink{classIoTcpUdpManager}{IoTcpUdpManager} \& {\bfseries \_\-io\_\-tcpudp\_\-manager}}
\label{classIoTcpUdpComm_aba32b6b2b0ee80a3bc898c26a959a9d3}

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

\item 
\hypertarget{classIoTcpUdpComm_a491c1b1e2085d2cf4126d05b9c941be5}{
const int {\bfseries \_\-family}}
\label{classIoTcpUdpComm_a491c1b1e2085d2cf4126d05b9c941be5}

\item 
\hypertarget{classIoTcpUdpComm_ade5d0832932114fac4ac4179955dd580}{
const bool {\bfseries \_\-is\_\-tcp}}
\label{classIoTcpUdpComm_ade5d0832932114fac4ac4179955dd580}

\item 
\hypertarget{classIoTcpUdpComm_a53d6b5cdc1d55b5e1f1dc4de5cb56349}{
const string {\bfseries \_\-creator}}
\label{classIoTcpUdpComm_a53d6b5cdc1d55b5e1f1dc4de5cb56349}

\item 
\hypertarget{classIoTcpUdpComm_acf33a4666ce804d3cc345e1ef3e5d237}{
const string {\bfseries \_\-sockid}}
\label{classIoTcpUdpComm_acf33a4666ce804d3cc345e1ef3e5d237}

\item 
\hypertarget{classIoTcpUdpComm_a1235897e170eba614000fdf87c5d8796}{
const string {\bfseries \_\-listener\_\-sockid}}
\label{classIoTcpUdpComm_a1235897e170eba614000fdf87c5d8796}

\item 
\hypertarget{classIoTcpUdpComm_a42dc9523beeab677adaaa13d1e0c8e3e}{
const \hyperlink{classIPvX}{IPvX} {\bfseries \_\-peer\_\-host}}
\label{classIoTcpUdpComm_a42dc9523beeab677adaaa13d1e0c8e3e}

\item 
\hypertarget{classIoTcpUdpComm_aebdf933d60bfbd107b7874b73615b7cf}{
const uint16\_\-t {\bfseries \_\-peer\_\-port}}
\label{classIoTcpUdpComm_aebdf933d60bfbd107b7874b73615b7cf}

\item 
\hypertarget{classIoTcpUdpComm_a603a17e504106117509da451f41dd7d7}{
IoTcpUdpPlugins {\bfseries \_\-io\_\-tcpudp\_\-plugins}}
\label{classIoTcpUdpComm_a603a17e504106117509da451f41dd7d7}

\item 
\hypertarget{classIoTcpUdpComm_a1df0516348d08ebcc46ff467e4795e09}{
JoinedGroupsTable {\bfseries \_\-joined\_\-groups\_\-table}}
\label{classIoTcpUdpComm_a1df0516348d08ebcc46ff467e4795e09}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
A class that handles I/O TCP/UDP communication. 

\subsection{Constructor \& Destructor Documentation}
\hypertarget{classIoTcpUdpComm_abec7d2f4138beddf4232db703d3e6ac5}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!IoTcpUdpComm@{IoTcpUdpComm}}
\index{IoTcpUdpComm@{IoTcpUdpComm}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{IoTcpUdpComm}]{\setlength{\rightskip}{0pt plus 5cm}IoTcpUdpComm::IoTcpUdpComm (
\begin{DoxyParamCaption}
\item[{{\bf IoTcpUdpManager} \&}]{io\_\-tcpudp\_\-manager, }
\item[{const {\bf IfTree} \&}]{iftree, }
\item[{int}]{family, }
\item[{bool}]{is\_\-tcp, }
\item[{const string \&}]{creator}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpComm_abec7d2f4138beddf4232db703d3e6ac5}


Constructor for \hyperlink{classIoTcpUdpComm}{IoTcpUdpComm}. 


\begin{DoxyParams}{Parameters}
{\em io\_\-tcpudp\_\-manager} & \hyperlink{protocolthe-p}{the} corresponding I/O TCP/UDP manager (\hyperlink{classIoTcpUdpManager}{IoTcpUdpManager}). \\
\hline
{\em iftree} & \hyperlink{protocolthe-p}{the} interface tree to use. \\
\hline
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\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} socket creator. \\
\hline
\end{DoxyParams}
\hypertarget{classIoTcpUdpComm_a7d5d122c54f4f96f71bf16919b274bf9}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!IoTcpUdpComm@{IoTcpUdpComm}}
\index{IoTcpUdpComm@{IoTcpUdpComm}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{IoTcpUdpComm}]{\setlength{\rightskip}{0pt plus 5cm}IoTcpUdpComm::IoTcpUdpComm (
\begin{DoxyParamCaption}
\item[{{\bf IoTcpUdpManager} \&}]{io\_\-tcpudp\_\-manager, }
\item[{const {\bf IfTree} \&}]{iftree, }
\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}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpComm_a7d5d122c54f4f96f71bf16919b274bf9}


Constructor for connected \hyperlink{classIoTcpUdpComm}{IoTcpUdpComm}. 


\begin{DoxyParams}{Parameters}
{\em io\_\-tcpudp\_\-manager} & \hyperlink{protocolthe-p}{the} corresponding I/O TCP/UDP manager (\hyperlink{classIoTcpUdpManager}{IoTcpUdpManager}). \\
\hline
{\em iftree} & \hyperlink{protocolthe-p}{the} interface tree to use. \\
\hline
{\em family} & \hyperlink{protocolthe-p}{the} address family (AF\_\-INET or AF\_\-INET6 for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6} respectively). \\
\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} socket 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
\end{DoxyParams}


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


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


\begin{DoxyParams}{Parameters}
{\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{classIoTcpUdpComm_a67a7aaaf33323e3b77aea86b2b235f09}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!add\_\-plugin@{add\_\-plugin}}
\index{add\_\-plugin@{add\_\-plugin}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{add\_\-plugin}]{\setlength{\rightskip}{0pt plus 5cm}void IoTcpUdpComm::add\_\-plugin (
\begin{DoxyParamCaption}
\item[{{\bf IoTcpUdp} $\ast$}]{new\_\-io\_\-tcpudp}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpComm_a67a7aaaf33323e3b77aea86b2b235f09}


Add a pre-\/allocated I/O TCP/UDP plugin. 


\begin{DoxyParams}{Parameters}
{\em new\_\-io\_\-tcpudp} & \hyperlink{protocolthe-p}{the} plugin to add. \\
\hline
\end{DoxyParams}
\hypertarget{classIoTcpUdpComm_a7d0857abf3644530bc8ba31b6c264cf8}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!allocate\_\-io\_\-tcpudp\_\-plugin@{allocate\_\-io\_\-tcpudp\_\-plugin}}
\index{allocate\_\-io\_\-tcpudp\_\-plugin@{allocate\_\-io\_\-tcpudp\_\-plugin}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{allocate\_\-io\_\-tcpudp\_\-plugin}]{\setlength{\rightskip}{0pt plus 5cm}void IoTcpUdpComm::allocate\_\-io\_\-tcpudp\_\-plugin (
\begin{DoxyParamCaption}
\item[{{\bf FeaDataPlaneManager} $\ast$}]{fea\_\-data\_\-plane\_\-manager}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpComm_a7d0857abf3644530bc8ba31b6c264cf8}


Allocate an I/O TCP/UDP plugin for a given data plane manager. 


\begin{DoxyParams}{Parameters}
{\em fea\_\-data\_\-plane\_\-manager} & \hyperlink{protocolthe-p}{the} data plane manager. \\
\hline
\end{DoxyParams}
\hypertarget{classIoTcpUdpComm_a97f42935ef90406825feeb582f3e72f3}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!bind@{bind}}
\index{bind@{bind}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{bind}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpComm::bind (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{local\_\-addr, }
\item[{uint16\_\-t}]{local\_\-port, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpComm_a97f42935ef90406825feeb582f3e72f3}


Bind a socket. 


\begin{DoxyParams}{Parameters}
{\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{classIoTcpUdpComm_a985ec5791dddc7ef31ee03834e5182b6}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!close@{close}}
\index{close@{close}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{close}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpComm::close (
\begin{DoxyParamCaption}
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpComm_a985ec5791dddc7ef31ee03834e5182b6}


Close socket. 


\begin{DoxyParams}{Parameters}
{\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{classIoTcpUdpComm_afed706234052fce99b1ff70d50a4f874}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!creator@{creator}}
\index{creator@{creator}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{creator}]{\setlength{\rightskip}{0pt plus 5cm}const string\& IoTcpUdpComm::creator (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoTcpUdpComm_afed706234052fce99b1ff70d50a4f874}


Get \hyperlink{protocolthe-p}{the} creator name. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} creator name. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpComm_aba5599489dcbdba1b9a88e3bb2cea993}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!deallocate\_\-io\_\-tcpudp\_\-plugin@{deallocate\_\-io\_\-tcpudp\_\-plugin}}
\index{deallocate\_\-io\_\-tcpudp\_\-plugin@{deallocate\_\-io\_\-tcpudp\_\-plugin}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{deallocate\_\-io\_\-tcpudp\_\-plugin}]{\setlength{\rightskip}{0pt plus 5cm}void IoTcpUdpComm::deallocate\_\-io\_\-tcpudp\_\-plugin (
\begin{DoxyParamCaption}
\item[{{\bf FeaDataPlaneManager} $\ast$}]{fea\_\-data\_\-plane\_\-manager}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpComm_aba5599489dcbdba1b9a88e3bb2cea993}


Deallocate \hyperlink{protocolthe-p}{the} I/O TCP/UDP plugin for a given data plane manager. 


\begin{DoxyParams}{Parameters}
{\em fea\_\-data\_\-plane\_\-manager} & \hyperlink{protocolthe-p}{the} data plane manager. \\
\hline
\end{DoxyParams}
\hypertarget{classIoTcpUdpComm_a6e4841d82846582d4fd5cd4d41b3220f}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!disconnect\_\-event@{disconnect\_\-event}}
\index{disconnect\_\-event@{disconnect\_\-event}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{disconnect\_\-event}]{\setlength{\rightskip}{0pt plus 5cm}void IoTcpUdpComm::disconnect\_\-event (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classIoTcpUdpComm_a6e4841d82846582d4fd5cd4d41b3220f}


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{classIoTcpUdpComm_a985ec5791dddc7ef31ee03834e5182b6}{close()}. 

Implements \hyperlink{classIoTcpUdpReceiver_ac58b2096de49650a0f7fb974b88d448d}{IoTcpUdpReceiver}.

\hypertarget{classIoTcpUdpComm_ad92362e78e7487ef1a4f9c43229738bd}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!error\_\-event@{error\_\-event}}
\index{error\_\-event@{error\_\-event}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{error\_\-event}]{\setlength{\rightskip}{0pt plus 5cm}void IoTcpUdpComm::error\_\-event (
\begin{DoxyParamCaption}
\item[{const string \&}]{error, }
\item[{bool}]{fatal}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classIoTcpUdpComm_ad92362e78e7487ef1a4f9c43229738bd}


Error occured event. 


\begin{DoxyParams}{Parameters}
{\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{classIoTcpUdpReceiver_a5f5107217483aa0f979183872d828ebc}{IoTcpUdpReceiver}.

\hypertarget{classIoTcpUdpComm_a134a7bbd183061806f306e883e4689b5}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!inbound\_\-connect\_\-event@{inbound\_\-connect\_\-event}}
\index{inbound\_\-connect\_\-event@{inbound\_\-connect\_\-event}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{inbound\_\-connect\_\-event}]{\setlength{\rightskip}{0pt plus 5cm}void IoTcpUdpComm::inbound\_\-connect\_\-event (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{src\_\-host, }
\item[{uint16\_\-t}]{src\_\-port, }
\item[{{\bf IoTcpUdp} $\ast$}]{new\_\-io\_\-tcpudp}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classIoTcpUdpComm_a134a7bbd183061806f306e883e4689b5}


Inbound connection request received event. 

It applies only to TCP sockets.


\begin{DoxyParams}{Parameters}
{\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\_\-io\_\-tcpudp} & \hyperlink{protocolthe-p}{the} handler for \hyperlink{protocolthe-p}{the} new connection. \\
\hline
\end{DoxyParams}


Implements \hyperlink{classIoTcpUdpReceiver_aedc005a2fa5021c690f776c2f3adec84}{IoTcpUdpReceiver}.

\hypertarget{classIoTcpUdpComm_aa7959b2940c4dac2726d5f6d9e848ad5}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!listener\_\-sockid@{listener\_\-sockid}}
\index{listener\_\-sockid@{listener\_\-sockid}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{listener\_\-sockid}]{\setlength{\rightskip}{0pt plus 5cm}const string\& IoTcpUdpComm::listener\_\-sockid (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoTcpUdpComm_aa7959b2940c4dac2726d5f6d9e848ad5}


Get \hyperlink{protocolthe-p}{the} listener socket ID. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} listener socket ID. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpComm_a28cfe54607722b0e4a81f2d72b638249}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!outgoing\_\-connect\_\-event@{outgoing\_\-connect\_\-event}}
\index{outgoing\_\-connect\_\-event@{outgoing\_\-connect\_\-event}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{outgoing\_\-connect\_\-event}]{\setlength{\rightskip}{0pt plus 5cm}void IoTcpUdpComm::outgoing\_\-connect\_\-event (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classIoTcpUdpComm_a28cfe54607722b0e4a81f2d72b638249}


Outgoing connection request completed event. 

It applies only to TCP sockets. 

Implements \hyperlink{classIoTcpUdpReceiver_a1b128378f03e4ed5a0b9ec5a97c14e44}{IoTcpUdpReceiver}.

\hypertarget{classIoTcpUdpComm_a6f544457c524192f52ec2f1a4224d075}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!peer\_\-host@{peer\_\-host}}
\index{peer\_\-host@{peer\_\-host}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{peer\_\-host}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf IPvX}\& IoTcpUdpComm::peer\_\-host (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoTcpUdpComm_a6f544457c524192f52ec2f1a4224d075}


Get \hyperlink{protocolthe-p}{the} peer host IP address. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} peer host IP address. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpComm_a466e3beea2b2bc5f20d9829795aa3559}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!peer\_\-port@{peer\_\-port}}
\index{peer\_\-port@{peer\_\-port}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{peer\_\-port}]{\setlength{\rightskip}{0pt plus 5cm}uint16\_\-t IoTcpUdpComm::peer\_\-port (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoTcpUdpComm_a466e3beea2b2bc5f20d9829795aa3559}


Get \hyperlink{protocolthe-p}{the} peer host port number. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} peer host port number. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpComm_a8fc255e5658e0eaa7e750b4769012cfd}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!recv\_\-event@{recv\_\-event}}
\index{recv\_\-event@{recv\_\-event}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{recv\_\-event}]{\setlength{\rightskip}{0pt plus 5cm}void IoTcpUdpComm::recv\_\-event (
\begin{DoxyParamCaption}
\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{classIoTcpUdpComm_a8fc255e5658e0eaa7e750b4769012cfd}


Data received event. 


\begin{DoxyParams}{Parameters}
{\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{classIoTcpUdpReceiver_aa4b6bc9b606b87a08925e80b10b139f0}{IoTcpUdpReceiver}.

\hypertarget{classIoTcpUdpComm_a9dedeb51b881b603bb8317bceff2b254}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!send@{send}}
\index{send@{send}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{send}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpComm::send (
\begin{DoxyParamCaption}
\item[{const vector$<$ uint8\_\-t $>$ \&}]{data, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpComm_a9dedeb51b881b603bb8317bceff2b254}


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


\begin{DoxyParams}{Parameters}
{\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{classIoTcpUdpComm_a9f2d9daf98f8516d0353d3ea2598101c}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!send\_\-from\_\-multicast\_\-if@{send\_\-from\_\-multicast\_\-if}}
\index{send\_\-from\_\-multicast\_\-if@{send\_\-from\_\-multicast\_\-if}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{send\_\-from\_\-multicast\_\-if}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpComm::send\_\-from\_\-multicast\_\-if (
\begin{DoxyParamCaption}
\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{classIoTcpUdpComm_a9f2d9daf98f8516d0353d3ea2598101c}


\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{classIoTcpUdpComm_a7f633b5ec582361fea7ec1b8ff4b9a26}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!send\_\-to@{send\_\-to}}
\index{send\_\-to@{send\_\-to}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{send\_\-to}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpComm::send\_\-to (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{remote\_\-addr, }
\item[{uint16\_\-t}]{remote\_\-port, }
\item[{const vector$<$ uint8\_\-t $>$ \&}]{data, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpComm_a7f633b5ec582361fea7ec1b8ff4b9a26}


\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 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{classIoTcpUdpComm_aff9896193cc49eaac45e96dc6aba461d}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!set\_\-socket\_\-option@{set\_\-socket\_\-option}}
\index{set\_\-socket\_\-option@{set\_\-socket\_\-option}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{set\_\-socket\_\-option}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpComm::set\_\-socket\_\-option (
\begin{DoxyParamCaption}
\item[{const string \&}]{optname, }
\item[{uint32\_\-t}]{optval, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpComm_aff9896193cc49eaac45e96dc6aba461d}


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`\"{} (\hyperlink{classIPv4}{IPv4} only) \char`\"{}receive\_\-broadcast\char`\"{} (\hyperlink{classIPv4}{IPv4} only) \char`\"{}reuseport\char`\"{} \char`\"{}send\_\-broadcast\char`\"{} (\hyperlink{classIPv4}{IPv4} only) \char`\"{}tos\char`\"{} (\hyperlink{classIPv4}{IPv4} only) \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{classIoTcpUdpComm_ad396186d4f11cc1a9dd094b24549b3e8}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!set\_\-socket\_\-option@{set\_\-socket\_\-option}}
\index{set\_\-socket\_\-option@{set\_\-socket\_\-option}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{set\_\-socket\_\-option}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpComm::set\_\-socket\_\-option (
\begin{DoxyParamCaption}
\item[{const string \&}]{optname, }
\item[{const string \&}]{optval, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpComm_ad396186d4f11cc1a9dd094b24549b3e8}


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{classIoTcpUdpComm_af7256d5ef077c50f04a7d8b83367da40}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!sockid@{sockid}}
\index{sockid@{sockid}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{sockid}]{\setlength{\rightskip}{0pt plus 5cm}const string\& IoTcpUdpComm::sockid (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoTcpUdpComm_af7256d5ef077c50f04a7d8b83367da40}


Get \hyperlink{protocolthe-p}{the} socket ID. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} socket ID. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdpComm_a84dd6d2868fcca62ff8705e42dce13aa}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!tcp\_\-listen@{tcp\_\-listen}}
\index{tcp\_\-listen@{tcp\_\-listen}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{tcp\_\-listen}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpComm::tcp\_\-listen (
\begin{DoxyParamCaption}
\item[{uint32\_\-t}]{backlog, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpComm_a84dd6d2868fcca62ff8705e42dce13aa}


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 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{classIoTcpUdpComm_a727d7f4235df6a06d4058ac7b02abdad}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!tcp\_\-open@{tcp\_\-open}}
\index{tcp\_\-open@{tcp\_\-open}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{tcp\_\-open}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpComm::tcp\_\-open (
\begin{DoxyParamCaption}
\item[{string \&}]{sockid, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpComm_a727d7f4235df6a06d4058ac7b02abdad}


Open a TCP socket. 


\begin{DoxyParams}{Parameters}
{\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{classIoTcpUdpComm_ae1235de60c417a908ac31e6b8c5572cc}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!tcp\_\-open\_\-and\_\-bind@{tcp\_\-open\_\-and\_\-bind}}
\index{tcp\_\-open\_\-and\_\-bind@{tcp\_\-open\_\-and\_\-bind}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{tcp\_\-open\_\-and\_\-bind}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpComm::tcp\_\-open\_\-and\_\-bind (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{local\_\-addr, }
\item[{uint16\_\-t}]{local\_\-port, }
\item[{string \&}]{sockid, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpComm_ae1235de60c417a908ac31e6b8c5572cc}


Create a bound TCP socket. 


\begin{DoxyParams}{Parameters}
{\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{classIoTcpUdpComm_a03fbb96f883b15f4d72720fc74173c60}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!tcp\_\-open\_\-bind\_\-connect@{tcp\_\-open\_\-bind\_\-connect}}
\index{tcp\_\-open\_\-bind\_\-connect@{tcp\_\-open\_\-bind\_\-connect}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{tcp\_\-open\_\-bind\_\-connect}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpComm::tcp\_\-open\_\-bind\_\-connect (
\begin{DoxyParamCaption}
\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{classIoTcpUdpComm_a03fbb96f883b15f4d72720fc74173c60}


Create a bound and connected TCP socket. 


\begin{DoxyParams}{Parameters}
{\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{classIoTcpUdpComm_a41f86547b2dac549a500d073566b1d51}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!udp\_\-enable\_\-recv@{udp\_\-enable\_\-recv}}
\index{udp\_\-enable\_\-recv@{udp\_\-enable\_\-recv}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{udp\_\-enable\_\-recv}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpComm::udp\_\-enable\_\-recv (
\begin{DoxyParamCaption}
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpComm_a41f86547b2dac549a500d073566b1d51}


Enable a UDP socket for datagram reception. 


\begin{DoxyParams}{Parameters}
{\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{classIoTcpUdpComm_a87cbfe5f1b13591c3dfcf79cd4ac1ad5}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!udp\_\-join\_\-group@{udp\_\-join\_\-group}}
\index{udp\_\-join\_\-group@{udp\_\-join\_\-group}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{udp\_\-join\_\-group}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpComm::udp\_\-join\_\-group (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{mcast\_\-addr, }
\item[{const {\bf IPvX} \&}]{join\_\-if\_\-addr, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpComm_a87cbfe5f1b13591c3dfcf79cd4ac1ad5}


Join multicast group on already bound socket. 


\begin{DoxyParams}{Parameters}
{\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{classIoTcpUdpComm_a89f571b484bd99df2b84e01d0077f3d0}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!udp\_\-leave\_\-group@{udp\_\-leave\_\-group}}
\index{udp\_\-leave\_\-group@{udp\_\-leave\_\-group}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{udp\_\-leave\_\-group}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpComm::udp\_\-leave\_\-group (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{mcast\_\-addr, }
\item[{const {\bf IPvX} \&}]{leave\_\-if\_\-addr, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpComm_a89f571b484bd99df2b84e01d0077f3d0}


Leave multicast group on already bound socket. 


\begin{DoxyParams}{Parameters}
{\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{classIoTcpUdpComm_ada2a62692beae7468944228c00fa7849}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!udp\_\-open@{udp\_\-open}}
\index{udp\_\-open@{udp\_\-open}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{udp\_\-open}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpComm::udp\_\-open (
\begin{DoxyParamCaption}
\item[{string \&}]{sockid, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdpComm_ada2a62692beae7468944228c00fa7849}


Open an UDP socket. 


\begin{DoxyParams}{Parameters}
{\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{classIoTcpUdpComm_a8a389358e1df0bb461a73512aa8dddc0}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!udp\_\-open\_\-and\_\-bind@{udp\_\-open\_\-and\_\-bind}}
\index{udp\_\-open\_\-and\_\-bind@{udp\_\-open\_\-and\_\-bind}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{udp\_\-open\_\-and\_\-bind}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpComm::udp\_\-open\_\-and\_\-bind (
\begin{DoxyParamCaption}
\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{classIoTcpUdpComm_a8a389358e1df0bb461a73512aa8dddc0}


Create a bound UDP socket. 


\begin{DoxyParams}{Parameters}
{\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{classIoTcpUdpComm_af6b05137de57054c737b3c7b6dbf365e}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!udp\_\-open\_\-bind\_\-broadcast@{udp\_\-open\_\-bind\_\-broadcast}}
\index{udp\_\-open\_\-bind\_\-broadcast@{udp\_\-open\_\-bind\_\-broadcast}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{udp\_\-open\_\-bind\_\-broadcast}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpComm::udp\_\-open\_\-bind\_\-broadcast (
\begin{DoxyParamCaption}
\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{classIoTcpUdpComm_af6b05137de57054c737b3c7b6dbf365e}


Create a bound, and optionally connected, UDP broadcast socket. 


\begin{DoxyParams}{Parameters}
{\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{classIoTcpUdpComm_a9dedeb51b881b603bb8317bceff2b254}{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{classIoTcpUdpComm_a4f947abef20011dbd7da04ea266f5424}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!udp\_\-open\_\-bind\_\-connect@{udp\_\-open\_\-bind\_\-connect}}
\index{udp\_\-open\_\-bind\_\-connect@{udp\_\-open\_\-bind\_\-connect}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{udp\_\-open\_\-bind\_\-connect}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpComm::udp\_\-open\_\-bind\_\-connect (
\begin{DoxyParamCaption}
\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{classIoTcpUdpComm_a4f947abef20011dbd7da04ea266f5424}


Create a bound and connected UDP socket. 


\begin{DoxyParams}{Parameters}
{\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{classIoTcpUdpComm_a7ff7f6922418ad9786b037351af71d38}{
\index{IoTcpUdpComm@{IoTcpUdpComm}!udp\_\-open\_\-bind\_\-join@{udp\_\-open\_\-bind\_\-join}}
\index{udp\_\-open\_\-bind\_\-join@{udp\_\-open\_\-bind\_\-join}!IoTcpUdpComm@{IoTcpUdpComm}}
\subsubsection[{udp\_\-open\_\-bind\_\-join}]{\setlength{\rightskip}{0pt plus 5cm}int IoTcpUdpComm::udp\_\-open\_\-bind\_\-join (
\begin{DoxyParamCaption}
\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{classIoTcpUdpComm_a7ff7f6922418ad9786b037351af71d38}


Create a bound UDP multicast socket. 


\begin{DoxyParams}{Parameters}
{\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}


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}
