\hypertarget{classIoTcpUdp}{
\section{IoTcpUdp Class Reference}
\label{classIoTcpUdp}\index{IoTcpUdp@{IoTcpUdp}}
}


A base class for I/O TCP/UDP communication.  




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

Inheritance diagram for IoTcpUdp:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=2.000000cm]{classIoTcpUdp}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{classIoTcpUdp_a141f79354c70bce3aec2cf24d6fb7ac9}{IoTcpUdp} (\hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} \&fea\_\-data\_\-plane\_\-manager, const \hyperlink{classIfTree}{IfTree} \&iftree, int family, bool is\_\-tcp)
\begin{DoxyCompactList}\small\item\em Constructor for a given address family. \item\end{DoxyCompactList}\item 
\hypertarget{classIoTcpUdp_aa5d99c16481c7f8d361ee72f3383bfc9}{
virtual \hyperlink{classIoTcpUdp_aa5d99c16481c7f8d361ee72f3383bfc9}{$\sim$IoTcpUdp} ()}
\label{classIoTcpUdp_aa5d99c16481c7f8d361ee72f3383bfc9}

\begin{DoxyCompactList}\small\item\em Virtual destructor. \item\end{DoxyCompactList}\item 
\hyperlink{classIoTcpUdpManager}{IoTcpUdpManager} \& \hyperlink{classIoTcpUdp_a6613f0de012b64ed57b11a3866fcaad6}{io\_\-tcpudp\_\-manager} ()
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} \hyperlink{classIoTcpUdpManager}{IoTcpUdpManager} instance. \item\end{DoxyCompactList}\item 
\hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} \& \hyperlink{classIoTcpUdp_ab93c5b055d265549f1c428d070045416}{fea\_\-data\_\-plane\_\-manager} ()
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} \hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} instance. \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classIoTcpUdp_ad327979d62ef65a5557f28e1368dbb28}{is\_\-running} () const 
\begin{DoxyCompactList}\small\item\em Test whether this instance is running. \item\end{DoxyCompactList}\item 
\hyperlink{classEventLoop}{EventLoop} \& \hyperlink{classIoTcpUdp_a0a6b3b856fee4c7daa776fe4794d5b4e}{eventloop} ()
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} event loop. \item\end{DoxyCompactList}\item 
const \hyperlink{classIfTree}{IfTree} \& \hyperlink{classIoTcpUdp_aad6dbe8adb7b79125b30c7bdc43ba785}{iftree} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} interface tree. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoTcpUdp_a52e3b3d20f3640e860955b2ae97b01ff}{family} () const 
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} address family. \item\end{DoxyCompactList}\item 
virtual bool \hyperlink{classIoTcpUdp_af8f31f104018736d744287920c567200}{is\_\-tcp} () const 
\begin{DoxyCompactList}\small\item\em Test whether this is TCP entry. \item\end{DoxyCompactList}\item 
\hyperlink{classIoTcpUdpReceiver}{IoTcpUdpReceiver} $\ast$ \hyperlink{classIoTcpUdp_ad52826beb8c07d3e03459881264e75f5}{io\_\-tcpudp\_\-receiver} ()
\begin{DoxyCompactList}\small\item\em Get \hyperlink{protocolthe-p}{the} registered receiver. \item\end{DoxyCompactList}\item 
virtual void \hyperlink{classIoTcpUdp_a086adc52d112763253ba442eff4e519c}{register\_\-io\_\-tcpudp\_\-receiver} (\hyperlink{classIoTcpUdpReceiver}{IoTcpUdpReceiver} $\ast$io\_\-tcpudp\_\-receiver)
\begin{DoxyCompactList}\small\item\em Register \hyperlink{protocolthe-p}{the} I/O TCP/UDP data receiver. \item\end{DoxyCompactList}\item 
\hypertarget{classIoTcpUdp_a8c66b7c8656b4bac8bd623cbd0a45946}{
virtual void \hyperlink{classIoTcpUdp_a8c66b7c8656b4bac8bd623cbd0a45946}{unregister\_\-io\_\-tcpudp\_\-receiver} ()}
\label{classIoTcpUdp_a8c66b7c8656b4bac8bd623cbd0a45946}

\begin{DoxyCompactList}\small\item\em Unregister \hyperlink{protocolthe-p}{the} I/O TCP/UDP data receiver. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoTcpUdp_abc82f6f92ec696f8a174673a00aaa7b4}{start} (string \&error\_\-msg)=0
\begin{DoxyCompactList}\small\item\em Start operation. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoTcpUdp_a2fdd3b26ccf4af375653f3bc34b6db96}{stop} (string \&error\_\-msg)=0
\begin{DoxyCompactList}\small\item\em Stop operation. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoTcpUdp_ae5cda6420a774c24fc8edc9a5780683e}{tcp\_\-open} (string \&error\_\-msg)=0
\begin{DoxyCompactList}\small\item\em Open a TCP socket. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoTcpUdp_aed038b61b40713bbf3b43c23e2ebb8bf}{udp\_\-open} (string \&error\_\-msg)=0
\begin{DoxyCompactList}\small\item\em Open an UDP socket. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoTcpUdp_a1a059d4142656cbd90a063e495f228b3}{tcp\_\-open\_\-and\_\-bind} (const \hyperlink{classIPvX}{IPvX} \&local\_\-addr, uint16\_\-t local\_\-port, string \&error\_\-msg)=0
\begin{DoxyCompactList}\small\item\em Create a bound TCP socket. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoTcpUdp_a1885797d1bf4d2d844272e7469ee41be}{udp\_\-open\_\-and\_\-bind} (const \hyperlink{classIPvX}{IPvX} \&local\_\-addr, uint16\_\-t local\_\-port, const string \&local\_\-dev, int reuse, string \&error\_\-msg)=0
\begin{DoxyCompactList}\small\item\em Create a bound UDP socket. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoTcpUdp_ae456ddc7b4ae18cad3f0d5768eaca335}{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 \&error\_\-msg)=0
\begin{DoxyCompactList}\small\item\em Create a bound UDP multicast socket. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoTcpUdp_abdc53f610eb3191ad0a945d2c559f5d3}{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 \&error\_\-msg)=0
\begin{DoxyCompactList}\small\item\em Create a bound and connected TCP socket. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoTcpUdp_a537ad4a122779c5f70c0627f9bca65ff}{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 \&error\_\-msg)=0
\begin{DoxyCompactList}\small\item\em Create a bound and connected UDP socket. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoTcpUdp_a33da4c42427d1f9d93e3877e21004c6f}{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 \&error\_\-msg)=0
\begin{DoxyCompactList}\small\item\em Create a bound, and optionally connected, UDP broadcast socket. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoTcpUdp_a262453ac79b0a2761f87dcfedd5706f8}{bind} (const \hyperlink{classIPvX}{IPvX} \&local\_\-addr, uint16\_\-t local\_\-port, string \&error\_\-msg)=0
\begin{DoxyCompactList}\small\item\em Bind a socket. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoTcpUdp_af8680ef1d8758531b6b84f1b155cde45}{udp\_\-join\_\-group} (const \hyperlink{classIPvX}{IPvX} \&mcast\_\-addr, const \hyperlink{classIPvX}{IPvX} \&join\_\-if\_\-addr, string \&error\_\-msg)=0
\begin{DoxyCompactList}\small\item\em Join multicast group on already bound socket. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoTcpUdp_a81b895c1634d404191a099bd5aff5b8c}{udp\_\-leave\_\-group} (const \hyperlink{classIPvX}{IPvX} \&mcast\_\-addr, const \hyperlink{classIPvX}{IPvX} \&leave\_\-if\_\-addr, string \&error\_\-msg)=0
\begin{DoxyCompactList}\small\item\em Leave multicast group on already bound socket. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoTcpUdp_a3451da21b4680d8b3e567efe12f28955}{close} (string \&error\_\-msg)=0
\begin{DoxyCompactList}\small\item\em Close socket. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoTcpUdp_a36932a32e49b0af71c3f8dc26d2a7474}{tcp\_\-listen} (uint32\_\-t backlog, string \&error\_\-msg)=0
\begin{DoxyCompactList}\small\item\em Listen for inbound connections on socket. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoTcpUdp_a1a05fdb241e8a99fd54a5407b7f6b618}{udp\_\-enable\_\-recv} (string \&error\_\-msg)=0
\begin{DoxyCompactList}\small\item\em Enable a UDP socket for datagram reception. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoTcpUdp_a53ca85961ecbc07da9cb76a7599cbbbb}{send} (const vector$<$ uint8\_\-t $>$ \&data, string \&error\_\-msg)=0
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} data on socket. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoTcpUdp_ad6f8969ce50e5b683bd73c91a504240e}{send\_\-to} (const \hyperlink{classIPvX}{IPvX} \&remote\_\-addr, uint16\_\-t remote\_\-port, const vector$<$ uint8\_\-t $>$ \&data, string \&error\_\-msg)=0
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} data on socket to a given destination. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoTcpUdp_abbe53379d6427f27b475c38b7c5d1c0d}{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)=0
\begin{DoxyCompactList}\small\item\em \hyperlink{structSend}{Send} data on socket to a given multicast group from a given interface. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoTcpUdp_ace5c324fe13721b31399062f87a214b9}{set\_\-socket\_\-option} (const string \&optname, uint32\_\-t optval, string \&error\_\-msg)=0
\begin{DoxyCompactList}\small\item\em Set a named socket option with an integer value. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoTcpUdp_aab7e194fffa22ae3ec1d604f1ca46df3}{set\_\-socket\_\-option} (const string \&optname, const string \&optval, string \&error\_\-msg)=0
\begin{DoxyCompactList}\small\item\em Set a named socket option with a string value. \item\end{DoxyCompactList}\item 
virtual int \hyperlink{classIoTcpUdp_a5a451d459c4b8f935b5e62ce88d1c130}{accept\_\-connection} (bool is\_\-accepted, string \&error\_\-msg)=0
\begin{DoxyCompactList}\small\item\em \hyperlink{classAccept}{Accept} or reject a pending connection. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
virtual void \hyperlink{classIoTcpUdp_a853f18cdd724cf036470b2569ba3b6dd}{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 
virtual void \hyperlink{classIoTcpUdp_ab982a309297beb85886803c323611a9e}{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 
virtual void \hyperlink{classIoTcpUdp_aa7894ace4bcb80f13bdb6d73f508ce24}{outgoing\_\-connect\_\-event} ()
\begin{DoxyCompactList}\small\item\em Outgoing connection request completed event. \item\end{DoxyCompactList}\item 
virtual void \hyperlink{classIoTcpUdp_a4a03b2b52e52881ca886b89ae78367f9}{error\_\-event} (const string \&error, bool fatal)
\begin{DoxyCompactList}\small\item\em Error occured event. \item\end{DoxyCompactList}\item 
virtual void \hyperlink{classIoTcpUdp_a8df51e985201c944c3fc9a27d7fdf588}{disconnect\_\-event} ()
\begin{DoxyCompactList}\small\item\em Connection closed by peer event. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classIoTcpUdp_a91bba0e72d328c9b68e93422bca229e3}{
bool {\bfseries \_\-is\_\-running}}
\label{classIoTcpUdp_a91bba0e72d328c9b68e93422bca229e3}

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

\item 
\hypertarget{classIoTcpUdp_acc69150bc0b2aba3f461c62b2ebfabd2}{
\hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} \& {\bfseries \_\-fea\_\-data\_\-plane\_\-manager}}
\label{classIoTcpUdp_acc69150bc0b2aba3f461c62b2ebfabd2}

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

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

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

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

\item 
\hypertarget{classIoTcpUdp_a37dad714f6d65f320c856cb7cc14cba6}{
\hyperlink{classIoTcpUdpReceiver}{IoTcpUdpReceiver} $\ast$ {\bfseries \_\-io\_\-tcpudp\_\-receiver}}
\label{classIoTcpUdp_a37dad714f6d65f320c856cb7cc14cba6}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
A base class for I/O TCP/UDP communication. 

\subsection{Constructor \& Destructor Documentation}
\hypertarget{classIoTcpUdp_a141f79354c70bce3aec2cf24d6fb7ac9}{
\index{IoTcpUdp@{IoTcpUdp}!IoTcpUdp@{IoTcpUdp}}
\index{IoTcpUdp@{IoTcpUdp}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{IoTcpUdp}]{\setlength{\rightskip}{0pt plus 5cm}IoTcpUdp::IoTcpUdp (
\begin{DoxyParamCaption}
\item[{{\bf FeaDataPlaneManager} \&}]{fea\_\-data\_\-plane\_\-manager, }
\item[{const {\bf IfTree} \&}]{iftree, }
\item[{int}]{family, }
\item[{bool}]{is\_\-tcp}
\end{DoxyParamCaption}
)}}
\label{classIoTcpUdp_a141f79354c70bce3aec2cf24d6fb7ac9}


Constructor for a given address family. 


\begin{DoxyParams}{Parameters}
{\em fea\_\-data\_\-plane\_\-manager} & \hyperlink{protocolthe-p}{the} corresponding data plane manager (\hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager}). \\
\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
\end{DoxyParams}


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


\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}


Implemented in \hyperlink{classIoTcpUdpDummy_a6efd50920c5409f918bf7c91ef76bbcb}{IoTcpUdpDummy}, and \hyperlink{classIoTcpUdpSocket_a6dcfd162e8a4d1de7bd1d3ecac5fc02e}{IoTcpUdpSocket}.

\hypertarget{classIoTcpUdp_a262453ac79b0a2761f87dcfedd5706f8}{
\index{IoTcpUdp@{IoTcpUdp}!bind@{bind}}
\index{bind@{bind}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{bind}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoTcpUdp::bind (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{local\_\-addr, }
\item[{uint16\_\-t}]{local\_\-port, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoTcpUdp_a262453ac79b0a2761f87dcfedd5706f8}


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}


Implemented in \hyperlink{classIoTcpUdpDummy_a1265b63c0dd9e1e5acce95fa6e642ef1}{IoTcpUdpDummy}, and \hyperlink{classIoTcpUdpSocket_af33570ab3416113b3b5b2665d654a19c}{IoTcpUdpSocket}.

\hypertarget{classIoTcpUdp_a3451da21b4680d8b3e567efe12f28955}{
\index{IoTcpUdp@{IoTcpUdp}!close@{close}}
\index{close@{close}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{close}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoTcpUdp::close (
\begin{DoxyParamCaption}
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoTcpUdp_a3451da21b4680d8b3e567efe12f28955}


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}


Implemented in \hyperlink{classIoTcpUdpDummy_a55c809047ba82e7d9910e90d16000214}{IoTcpUdpDummy}, and \hyperlink{classIoTcpUdpSocket_a929f7f6ecf99cd3a3b865d237ecf92ac}{IoTcpUdpSocket}.

\hypertarget{classIoTcpUdp_a8df51e985201c944c3fc9a27d7fdf588}{
\index{IoTcpUdp@{IoTcpUdp}!disconnect\_\-event@{disconnect\_\-event}}
\index{disconnect\_\-event@{disconnect\_\-event}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{disconnect\_\-event}]{\setlength{\rightskip}{0pt plus 5cm}void IoTcpUdp::disconnect\_\-event (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}protected, virtual\mbox{]}}}}
\label{classIoTcpUdp_a8df51e985201c944c3fc9a27d7fdf588}


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{classIoTcpUdp_a3451da21b4680d8b3e567efe12f28955}{close()}. \hypertarget{classIoTcpUdp_a4a03b2b52e52881ca886b89ae78367f9}{
\index{IoTcpUdp@{IoTcpUdp}!error\_\-event@{error\_\-event}}
\index{error\_\-event@{error\_\-event}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{error\_\-event}]{\setlength{\rightskip}{0pt plus 5cm}void IoTcpUdp::error\_\-event (
\begin{DoxyParamCaption}
\item[{const string \&}]{error, }
\item[{bool}]{fatal}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}protected, virtual\mbox{]}}}}
\label{classIoTcpUdp_a4a03b2b52e52881ca886b89ae78367f9}


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}
\hypertarget{classIoTcpUdp_a0a6b3b856fee4c7daa776fe4794d5b4e}{
\index{IoTcpUdp@{IoTcpUdp}!eventloop@{eventloop}}
\index{eventloop@{eventloop}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{eventloop}]{\setlength{\rightskip}{0pt plus 5cm}{\bf EventLoop}\& IoTcpUdp::eventloop (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoTcpUdp_a0a6b3b856fee4c7daa776fe4794d5b4e}


Get \hyperlink{protocolthe-p}{the} event loop. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} event loop. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdp_a52e3b3d20f3640e860955b2ae97b01ff}{
\index{IoTcpUdp@{IoTcpUdp}!family@{family}}
\index{family@{family}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{family}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoTcpUdp::family (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline, virtual\mbox{]}}}}
\label{classIoTcpUdp_a52e3b3d20f3640e860955b2ae97b01ff}


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

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} address family. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdp_ab93c5b055d265549f1c428d070045416}{
\index{IoTcpUdp@{IoTcpUdp}!fea\_\-data\_\-plane\_\-manager@{fea\_\-data\_\-plane\_\-manager}}
\index{fea\_\-data\_\-plane\_\-manager@{fea\_\-data\_\-plane\_\-manager}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{fea\_\-data\_\-plane\_\-manager}]{\setlength{\rightskip}{0pt plus 5cm}{\bf FeaDataPlaneManager}\& IoTcpUdp::fea\_\-data\_\-plane\_\-manager (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoTcpUdp_ab93c5b055d265549f1c428d070045416}


Get \hyperlink{protocolthe-p}{the} \hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} instance. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} \hyperlink{classFeaDataPlaneManager}{FeaDataPlaneManager} instance. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdp_aad6dbe8adb7b79125b30c7bdc43ba785}{
\index{IoTcpUdp@{IoTcpUdp}!iftree@{iftree}}
\index{iftree@{iftree}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{iftree}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf IfTree}\& IoTcpUdp::iftree (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoTcpUdp_aad6dbe8adb7b79125b30c7bdc43ba785}


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

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} interface tree. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdp_ab982a309297beb85886803c323611a9e}{
\index{IoTcpUdp@{IoTcpUdp}!inbound\_\-connect\_\-event@{inbound\_\-connect\_\-event}}
\index{inbound\_\-connect\_\-event@{inbound\_\-connect\_\-event}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{inbound\_\-connect\_\-event}]{\setlength{\rightskip}{0pt plus 5cm}void IoTcpUdp::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{[}protected, virtual\mbox{]}}}}
\label{classIoTcpUdp_ab982a309297beb85886803c323611a9e}


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}
\hypertarget{classIoTcpUdp_a6613f0de012b64ed57b11a3866fcaad6}{
\index{IoTcpUdp@{IoTcpUdp}!io\_\-tcpudp\_\-manager@{io\_\-tcpudp\_\-manager}}
\index{io\_\-tcpudp\_\-manager@{io\_\-tcpudp\_\-manager}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{io\_\-tcpudp\_\-manager}]{\setlength{\rightskip}{0pt plus 5cm}{\bf IoTcpUdpManager}\& IoTcpUdp::io\_\-tcpudp\_\-manager (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoTcpUdp_a6613f0de012b64ed57b11a3866fcaad6}


Get \hyperlink{protocolthe-p}{the} \hyperlink{classIoTcpUdpManager}{IoTcpUdpManager} instance. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} \hyperlink{classIoTcpUdpManager}{IoTcpUdpManager} instance. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdp_ad52826beb8c07d3e03459881264e75f5}{
\index{IoTcpUdp@{IoTcpUdp}!io\_\-tcpudp\_\-receiver@{io\_\-tcpudp\_\-receiver}}
\index{io\_\-tcpudp\_\-receiver@{io\_\-tcpudp\_\-receiver}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{io\_\-tcpudp\_\-receiver}]{\setlength{\rightskip}{0pt plus 5cm}{\bf IoTcpUdpReceiver}$\ast$ IoTcpUdp::io\_\-tcpudp\_\-receiver (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}inline\mbox{]}}}}
\label{classIoTcpUdp_ad52826beb8c07d3e03459881264e75f5}


Get \hyperlink{protocolthe-p}{the} registered receiver. 

\begin{DoxyReturn}{Returns}
\hyperlink{protocolthe-p}{the} registered receiver. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdp_ad327979d62ef65a5557f28e1368dbb28}{
\index{IoTcpUdp@{IoTcpUdp}!is\_\-running@{is\_\-running}}
\index{is\_\-running@{is\_\-running}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{is\_\-running}]{\setlength{\rightskip}{0pt plus 5cm}virtual bool IoTcpUdp::is\_\-running (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline, virtual\mbox{]}}}}
\label{classIoTcpUdp_ad327979d62ef65a5557f28e1368dbb28}


Test whether this instance is running. 

\begin{DoxyReturn}{Returns}
true if \hyperlink{protocolthe-p}{the} instance is running, otherwise false. 
\end{DoxyReturn}
\hypertarget{classIoTcpUdp_af8f31f104018736d744287920c567200}{
\index{IoTcpUdp@{IoTcpUdp}!is\_\-tcp@{is\_\-tcp}}
\index{is\_\-tcp@{is\_\-tcp}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{is\_\-tcp}]{\setlength{\rightskip}{0pt plus 5cm}virtual bool IoTcpUdp::is\_\-tcp (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline, virtual\mbox{]}}}}
\label{classIoTcpUdp_af8f31f104018736d744287920c567200}


Test whether this is TCP entry. 

\begin{DoxyReturn}{Returns}
true if this is TCP entry, otherwise false (i.e., UDP). 
\end{DoxyReturn}
\hypertarget{classIoTcpUdp_aa7894ace4bcb80f13bdb6d73f508ce24}{
\index{IoTcpUdp@{IoTcpUdp}!outgoing\_\-connect\_\-event@{outgoing\_\-connect\_\-event}}
\index{outgoing\_\-connect\_\-event@{outgoing\_\-connect\_\-event}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{outgoing\_\-connect\_\-event}]{\setlength{\rightskip}{0pt plus 5cm}void IoTcpUdp::outgoing\_\-connect\_\-event (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}protected, virtual\mbox{]}}}}
\label{classIoTcpUdp_aa7894ace4bcb80f13bdb6d73f508ce24}


Outgoing connection request completed event. 

It applies only to TCP sockets. \hypertarget{classIoTcpUdp_a853f18cdd724cf036470b2569ba3b6dd}{
\index{IoTcpUdp@{IoTcpUdp}!recv\_\-event@{recv\_\-event}}
\index{recv\_\-event@{recv\_\-event}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{recv\_\-event}]{\setlength{\rightskip}{0pt plus 5cm}void IoTcpUdp::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{[}protected, virtual\mbox{]}}}}
\label{classIoTcpUdp_a853f18cdd724cf036470b2569ba3b6dd}


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}
\hypertarget{classIoTcpUdp_a086adc52d112763253ba442eff4e519c}{
\index{IoTcpUdp@{IoTcpUdp}!register\_\-io\_\-tcpudp\_\-receiver@{register\_\-io\_\-tcpudp\_\-receiver}}
\index{register\_\-io\_\-tcpudp\_\-receiver@{register\_\-io\_\-tcpudp\_\-receiver}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{register\_\-io\_\-tcpudp\_\-receiver}]{\setlength{\rightskip}{0pt plus 5cm}void IoTcpUdp::register\_\-io\_\-tcpudp\_\-receiver (
\begin{DoxyParamCaption}
\item[{{\bf IoTcpUdpReceiver} $\ast$}]{io\_\-tcpudp\_\-receiver}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}virtual\mbox{]}}}}
\label{classIoTcpUdp_a086adc52d112763253ba442eff4e519c}


Register \hyperlink{protocolthe-p}{the} I/O TCP/UDP data receiver. 


\begin{DoxyParams}{Parameters}
{\em io\_\-tcpudp\_\-receiver} & \hyperlink{protocolthe-p}{the} receiver to register. \\
\hline
\end{DoxyParams}
\hypertarget{classIoTcpUdp_a53ca85961ecbc07da9cb76a7599cbbbb}{
\index{IoTcpUdp@{IoTcpUdp}!send@{send}}
\index{send@{send}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{send}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoTcpUdp::send (
\begin{DoxyParamCaption}
\item[{const vector$<$ uint8\_\-t $>$ \&}]{data, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoTcpUdp_a53ca85961ecbc07da9cb76a7599cbbbb}


\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}


Implemented in \hyperlink{classIoTcpUdpDummy_aa61170e5fff39a65b6be4c9099286d56}{IoTcpUdpDummy}, and \hyperlink{classIoTcpUdpSocket_a73a0d227266572b9f2c4ca225f137261}{IoTcpUdpSocket}.

\hypertarget{classIoTcpUdp_abbe53379d6427f27b475c38b7c5d1c0d}{
\index{IoTcpUdp@{IoTcpUdp}!send\_\-from\_\-multicast\_\-if@{send\_\-from\_\-multicast\_\-if}}
\index{send\_\-from\_\-multicast\_\-if@{send\_\-from\_\-multicast\_\-if}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{send\_\-from\_\-multicast\_\-if}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoTcpUdp::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}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoTcpUdp_abbe53379d6427f27b475c38b7c5d1c0d}


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


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


Implemented in \hyperlink{classIoTcpUdpDummy_aba01bbb9d1df55c88a2eb1a6682d73bd}{IoTcpUdpDummy}, and \hyperlink{classIoTcpUdpSocket_a02aea071040a2344c9581a6fae2f8cec}{IoTcpUdpSocket}.

\hypertarget{classIoTcpUdp_ad6f8969ce50e5b683bd73c91a504240e}{
\index{IoTcpUdp@{IoTcpUdp}!send\_\-to@{send\_\-to}}
\index{send\_\-to@{send\_\-to}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{send\_\-to}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoTcpUdp::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}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoTcpUdp_ad6f8969ce50e5b683bd73c91a504240e}


\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}


Implemented in \hyperlink{classIoTcpUdpDummy_afe6cdfc4456a78e4161562a329548b8b}{IoTcpUdpDummy}, and \hyperlink{classIoTcpUdpSocket_ae08e28452b05ebab88e9389c0408e50b}{IoTcpUdpSocket}.

\hypertarget{classIoTcpUdp_aab7e194fffa22ae3ec1d604f1ca46df3}{
\index{IoTcpUdp@{IoTcpUdp}!set\_\-socket\_\-option@{set\_\-socket\_\-option}}
\index{set\_\-socket\_\-option@{set\_\-socket\_\-option}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{set\_\-socket\_\-option}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoTcpUdp::set\_\-socket\_\-option (
\begin{DoxyParamCaption}
\item[{const string \&}]{optname, }
\item[{const string \&}]{optval, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoTcpUdp_aab7e194fffa22ae3ec1d604f1ca46df3}


Set a named socket option with a string value. 


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


Implemented in \hyperlink{classIoTcpUdpDummy_a544f5f3dbff1be132870be2afdec3df8}{IoTcpUdpDummy}, and \hyperlink{classIoTcpUdpSocket_a82d9d3d924b106de0ce0f18666067b0a}{IoTcpUdpSocket}.

\hypertarget{classIoTcpUdp_ace5c324fe13721b31399062f87a214b9}{
\index{IoTcpUdp@{IoTcpUdp}!set\_\-socket\_\-option@{set\_\-socket\_\-option}}
\index{set\_\-socket\_\-option@{set\_\-socket\_\-option}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{set\_\-socket\_\-option}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoTcpUdp::set\_\-socket\_\-option (
\begin{DoxyParamCaption}
\item[{const string \&}]{optname, }
\item[{uint32\_\-t}]{optval, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoTcpUdp_ace5c324fe13721b31399062f87a214b9}


Set a named socket option with an integer value. 


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


Implemented in \hyperlink{classIoTcpUdpDummy_a3832177cb8da60d7e966223cceb55ddb}{IoTcpUdpDummy}, and \hyperlink{classIoTcpUdpSocket_a27dc7b3b4600a119f677e8f189d0ded7}{IoTcpUdpSocket}.

\hypertarget{classIoTcpUdp_abc82f6f92ec696f8a174673a00aaa7b4}{
\index{IoTcpUdp@{IoTcpUdp}!start@{start}}
\index{start@{start}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{start}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoTcpUdp::start (
\begin{DoxyParamCaption}
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoTcpUdp_abc82f6f92ec696f8a174673a00aaa7b4}


Start operation. 


\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}


Implemented in \hyperlink{classIoTcpUdpDummy_a848d35dca7e8961a435d765175ed8799}{IoTcpUdpDummy}, and \hyperlink{classIoTcpUdpSocket_ae637705746d243c42d7d82557bbb8383}{IoTcpUdpSocket}.

\hypertarget{classIoTcpUdp_a2fdd3b26ccf4af375653f3bc34b6db96}{
\index{IoTcpUdp@{IoTcpUdp}!stop@{stop}}
\index{stop@{stop}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{stop}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoTcpUdp::stop (
\begin{DoxyParamCaption}
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoTcpUdp_a2fdd3b26ccf4af375653f3bc34b6db96}


Stop operation. 


\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}


Implemented in \hyperlink{classIoTcpUdpDummy_a0cd751c58cb0d0e2346e905cb86a2859}{IoTcpUdpDummy}, and \hyperlink{classIoTcpUdpSocket_af3bd57f6fa39adec5f284a282e6894d3}{IoTcpUdpSocket}.

\hypertarget{classIoTcpUdp_a36932a32e49b0af71c3f8dc26d2a7474}{
\index{IoTcpUdp@{IoTcpUdp}!tcp\_\-listen@{tcp\_\-listen}}
\index{tcp\_\-listen@{tcp\_\-listen}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{tcp\_\-listen}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoTcpUdp::tcp\_\-listen (
\begin{DoxyParamCaption}
\item[{uint32\_\-t}]{backlog, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoTcpUdp_a36932a32e49b0af71c3f8dc26d2a7474}


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}


Implemented in \hyperlink{classIoTcpUdpDummy_a5b6cdfca56911f07b80670b30955672e}{IoTcpUdpDummy}, and \hyperlink{classIoTcpUdpSocket_a675623d6a5c032e4abdf64f58c9b2f20}{IoTcpUdpSocket}.

\hypertarget{classIoTcpUdp_ae5cda6420a774c24fc8edc9a5780683e}{
\index{IoTcpUdp@{IoTcpUdp}!tcp\_\-open@{tcp\_\-open}}
\index{tcp\_\-open@{tcp\_\-open}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{tcp\_\-open}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoTcpUdp::tcp\_\-open (
\begin{DoxyParamCaption}
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoTcpUdp_ae5cda6420a774c24fc8edc9a5780683e}


Open a TCP 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}


Implemented in \hyperlink{classIoTcpUdpDummy_a71a9672c5a30a939fe184258dbb16e0b}{IoTcpUdpDummy}, and \hyperlink{classIoTcpUdpSocket_a01141647da3bf2c4ad261b49d540f171}{IoTcpUdpSocket}.

\hypertarget{classIoTcpUdp_a1a059d4142656cbd90a063e495f228b3}{
\index{IoTcpUdp@{IoTcpUdp}!tcp\_\-open\_\-and\_\-bind@{tcp\_\-open\_\-and\_\-bind}}
\index{tcp\_\-open\_\-and\_\-bind@{tcp\_\-open\_\-and\_\-bind}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{tcp\_\-open\_\-and\_\-bind}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoTcpUdp::tcp\_\-open\_\-and\_\-bind (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{local\_\-addr, }
\item[{uint16\_\-t}]{local\_\-port, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoTcpUdp_a1a059d4142656cbd90a063e495f228b3}


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 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}


Implemented in \hyperlink{classIoTcpUdpDummy_a171339796111cac998ed2d5277613968}{IoTcpUdpDummy}, and \hyperlink{classIoTcpUdpSocket_a9d711cc79b8fd999a0f0c3369e062021}{IoTcpUdpSocket}.

\hypertarget{classIoTcpUdp_abdc53f610eb3191ad0a945d2c559f5d3}{
\index{IoTcpUdp@{IoTcpUdp}!tcp\_\-open\_\-bind\_\-connect@{tcp\_\-open\_\-bind\_\-connect}}
\index{tcp\_\-open\_\-bind\_\-connect@{tcp\_\-open\_\-bind\_\-connect}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{tcp\_\-open\_\-bind\_\-connect}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoTcpUdp::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 \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoTcpUdp_abdc53f610eb3191ad0a945d2c559f5d3}


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 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}


Implemented in \hyperlink{classIoTcpUdpDummy_ad7c53b3f15cc62449b10801b10d0a8ac}{IoTcpUdpDummy}, and \hyperlink{classIoTcpUdpSocket_ac349432dd585dd91f9e1136483b06fda}{IoTcpUdpSocket}.

\hypertarget{classIoTcpUdp_a1a05fdb241e8a99fd54a5407b7f6b618}{
\index{IoTcpUdp@{IoTcpUdp}!udp\_\-enable\_\-recv@{udp\_\-enable\_\-recv}}
\index{udp\_\-enable\_\-recv@{udp\_\-enable\_\-recv}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{udp\_\-enable\_\-recv}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoTcpUdp::udp\_\-enable\_\-recv (
\begin{DoxyParamCaption}
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoTcpUdp_a1a05fdb241e8a99fd54a5407b7f6b618}


Enable a UDP socket for datagram reception. 

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}


Implemented in \hyperlink{classIoTcpUdpDummy_a94d6505daa48741473966b4b49a7bc6b}{IoTcpUdpDummy}, and \hyperlink{classIoTcpUdpSocket_aeaac5e980710537b493f12485de772d6}{IoTcpUdpSocket}.

\hypertarget{classIoTcpUdp_af8680ef1d8758531b6b84f1b155cde45}{
\index{IoTcpUdp@{IoTcpUdp}!udp\_\-join\_\-group@{udp\_\-join\_\-group}}
\index{udp\_\-join\_\-group@{udp\_\-join\_\-group}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{udp\_\-join\_\-group}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoTcpUdp::udp\_\-join\_\-group (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{mcast\_\-addr, }
\item[{const {\bf IPvX} \&}]{join\_\-if\_\-addr, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoTcpUdp_af8680ef1d8758531b6b84f1b155cde45}


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}


Implemented in \hyperlink{classIoTcpUdpDummy_a1e94d4adff2be7c13b5fa62f1cd19bef}{IoTcpUdpDummy}, and \hyperlink{classIoTcpUdpSocket_a55c1fa62dc82b8810a372d07bb041f2c}{IoTcpUdpSocket}.

\hypertarget{classIoTcpUdp_a81b895c1634d404191a099bd5aff5b8c}{
\index{IoTcpUdp@{IoTcpUdp}!udp\_\-leave\_\-group@{udp\_\-leave\_\-group}}
\index{udp\_\-leave\_\-group@{udp\_\-leave\_\-group}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{udp\_\-leave\_\-group}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoTcpUdp::udp\_\-leave\_\-group (
\begin{DoxyParamCaption}
\item[{const {\bf IPvX} \&}]{mcast\_\-addr, }
\item[{const {\bf IPvX} \&}]{leave\_\-if\_\-addr, }
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoTcpUdp_a81b895c1634d404191a099bd5aff5b8c}


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}


Implemented in \hyperlink{classIoTcpUdpDummy_ac32b43bd68e714fe34ae88beaf65817b}{IoTcpUdpDummy}, and \hyperlink{classIoTcpUdpSocket_abf3d4dd56e0bc702b093d4d730a7325f}{IoTcpUdpSocket}.

\hypertarget{classIoTcpUdp_aed038b61b40713bbf3b43c23e2ebb8bf}{
\index{IoTcpUdp@{IoTcpUdp}!udp\_\-open@{udp\_\-open}}
\index{udp\_\-open@{udp\_\-open}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{udp\_\-open}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoTcpUdp::udp\_\-open (
\begin{DoxyParamCaption}
\item[{string \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoTcpUdp_aed038b61b40713bbf3b43c23e2ebb8bf}


Open an UDP 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}


Implemented in \hyperlink{classIoTcpUdpDummy_ab19a774d6ee91031212a37d3e46eb595}{IoTcpUdpDummy}, and \hyperlink{classIoTcpUdpSocket_aff49e9fa1809a52d92b04ae818ad9610}{IoTcpUdpSocket}.

\hypertarget{classIoTcpUdp_a1885797d1bf4d2d844272e7469ee41be}{
\index{IoTcpUdp@{IoTcpUdp}!udp\_\-open\_\-and\_\-bind@{udp\_\-open\_\-and\_\-bind}}
\index{udp\_\-open\_\-and\_\-bind@{udp\_\-open\_\-and\_\-bind}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{udp\_\-open\_\-and\_\-bind}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoTcpUdp::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 \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoTcpUdp_a1885797d1bf4d2d844272e7469ee41be}


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 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}


Implemented in \hyperlink{classIoTcpUdpDummy_a03e82a0e7aa7e48150aaabfbf09ce6bd}{IoTcpUdpDummy}, and \hyperlink{classIoTcpUdpSocket_a62e5779761a172dbcd459562f5de0df3}{IoTcpUdpSocket}.

\hypertarget{classIoTcpUdp_a33da4c42427d1f9d93e3877e21004c6f}{
\index{IoTcpUdp@{IoTcpUdp}!udp\_\-open\_\-bind\_\-broadcast@{udp\_\-open\_\-bind\_\-broadcast}}
\index{udp\_\-open\_\-bind\_\-broadcast@{udp\_\-open\_\-bind\_\-broadcast}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{udp\_\-open\_\-bind\_\-broadcast}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoTcpUdp::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 \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoTcpUdp_a33da4c42427d1f9d93e3877e21004c6f}


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{classIoTcpUdp_a53ca85961ecbc07da9cb76a7599cbbbb}{send()} not sendto(). \\
\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}


Implemented in \hyperlink{classIoTcpUdpDummy_a6e467c7aa422878017121301691d9b5c}{IoTcpUdpDummy}, and \hyperlink{classIoTcpUdpSocket_a226e38963f18eccbb980da710c1cbe53}{IoTcpUdpSocket}.

\hypertarget{classIoTcpUdp_a537ad4a122779c5f70c0627f9bca65ff}{
\index{IoTcpUdp@{IoTcpUdp}!udp\_\-open\_\-bind\_\-connect@{udp\_\-open\_\-bind\_\-connect}}
\index{udp\_\-open\_\-bind\_\-connect@{udp\_\-open\_\-bind\_\-connect}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{udp\_\-open\_\-bind\_\-connect}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoTcpUdp::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 \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoTcpUdp_a537ad4a122779c5f70c0627f9bca65ff}


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 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}


Implemented in \hyperlink{classIoTcpUdpDummy_a0140c690393d2df426be9005113cadc6}{IoTcpUdpDummy}, and \hyperlink{classIoTcpUdpSocket_ae07c8afc6631fef73e4be27bdd15ffc2}{IoTcpUdpSocket}.

\hypertarget{classIoTcpUdp_ae456ddc7b4ae18cad3f0d5768eaca335}{
\index{IoTcpUdp@{IoTcpUdp}!udp\_\-open\_\-bind\_\-join@{udp\_\-open\_\-bind\_\-join}}
\index{udp\_\-open\_\-bind\_\-join@{udp\_\-open\_\-bind\_\-join}!IoTcpUdp@{IoTcpUdp}}
\subsubsection[{udp\_\-open\_\-bind\_\-join}]{\setlength{\rightskip}{0pt plus 5cm}virtual int IoTcpUdp::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 \&}]{error\_\-msg}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}pure virtual\mbox{]}}}}
\label{classIoTcpUdp_ae456ddc7b4ae18cad3f0d5768eaca335}


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 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}


Implemented in \hyperlink{classIoTcpUdpDummy_ab91c1cf5e3439939c5e363e697ba2623}{IoTcpUdpDummy}, and \hyperlink{classIoTcpUdpSocket_a178ae69f8fee1f3b0ce91ec368666d1d}{IoTcpUdpSocket}.



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