\hypertarget{classVifManager}{
\section{VifManager Class Reference}
\label{classVifManager}\index{VifManager@{VifManager}}
}


\hyperlink{classVifManager}{VifManager} keeps track of \hyperlink{protocolthe-p}{the} VIFs currently enabled in \hyperlink{protocolthe-p}{the} FEA.  




{\ttfamily \#include $<$vifmanager.hh$>$}

Inheritance diagram for VifManager:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=3.929825cm]{classVifManager}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{classVifManager_afda23ea71ef03d591ec86e2725aa56e6}{VifManager} (\hyperlink{classXrlRouter}{XrlRouter} \&xrl\_\-router, \hyperlink{classEventLoop}{EventLoop} \&eventloop, \hyperlink{classRibManager}{RibManager} $\ast$rib\_\-manager, const string \&fea\_\-target)
\begin{DoxyCompactList}\small\item\em \hyperlink{classVifManager}{VifManager} constructor. \item\end{DoxyCompactList}\item 
\hypertarget{classVifManager_a9ca3aca60be1a9d7c2be024f727dffa3}{
\hyperlink{classVifManager_a9ca3aca60be1a9d7c2be024f727dffa3}{$\sim$VifManager} ()}
\label{classVifManager_a9ca3aca60be1a9d7c2be024f727dffa3}

\begin{DoxyCompactList}\small\item\em \hyperlink{classVifManager}{VifManager} destructor. \item\end{DoxyCompactList}\item 
int \hyperlink{classVifManager_a3115c15090aa81f625f450cdaab864aa}{start} ()
\begin{DoxyCompactList}\small\item\em Start operation. \item\end{DoxyCompactList}\item 
int \hyperlink{classVifManager_a80109b8a95b4b0731d697719242cdac0}{stop} ()
\begin{DoxyCompactList}\small\item\em Stop operation. \item\end{DoxyCompactList}\item 
int \hyperlink{classVifManager_a7a0a934e7b855e1b74a67114b112df9d}{final\_\-start} ()
\begin{DoxyCompactList}\small\item\em Completely start \hyperlink{protocolthe-p}{the} node operation. \item\end{DoxyCompactList}\item 
int \hyperlink{classVifManager_a0adfd1ce4ed5a9b663b32ad2df9ba45e}{final\_\-stop} ()
\begin{DoxyCompactList}\small\item\em Completely stop \hyperlink{protocolthe-p}{the} node operation. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classVifManager_a69ba65bfc6dfa3ec57cd40084d32e22d}{
void {\bfseries tree\_\-complete} ()}
\label{classVifManager_a69ba65bfc6dfa3ec57cd40084d32e22d}

\item 
\hypertarget{classVifManager_aa34801384f4d12927a763048dee1561d}{
void {\bfseries updates\_\-made} ()}
\label{classVifManager_aa34801384f4d12927a763048dee1561d}

\item 
\hypertarget{classVifManager_a0191a9c8b1208ffaf43ed56f5750bf54}{
void {\bfseries incr\_\-startup\_\-requests\_\-n} ()}
\label{classVifManager_a0191a9c8b1208ffaf43ed56f5750bf54}

\item 
\hypertarget{classVifManager_af5914fea815f853f162495e3bddde335}{
void {\bfseries decr\_\-startup\_\-requests\_\-n} ()}
\label{classVifManager_af5914fea815f853f162495e3bddde335}

\item 
\hypertarget{classVifManager_aa74b0d7220fd8e9c451e99f452d1d0c3}{
void {\bfseries incr\_\-shutdown\_\-requests\_\-n} ()}
\label{classVifManager_aa74b0d7220fd8e9c451e99f452d1d0c3}

\item 
\hypertarget{classVifManager_a1c436419b4ce32f23dc321edc76a4f13}{
void {\bfseries decr\_\-shutdown\_\-requests\_\-n} ()}
\label{classVifManager_a1c436419b4ce32f23dc321edc76a4f13}

\item 
\hypertarget{classVifManager_a7c7eee5497d141a9edea85c620ccabab}{
void {\bfseries update\_\-status} ()}
\label{classVifManager_a7c7eee5497d141a9edea85c620ccabab}

\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
void \hyperlink{classVifManager_aad0d09d0c5d25c6c0b4c3f1d1130acd8}{status\_\-change} (\hyperlink{classServiceBase}{ServiceBase} $\ast$service, ServiceStatus old\_\-status, ServiceStatus new\_\-status)
\begin{DoxyCompactList}\small\item\em A method invoked when \hyperlink{protocolthe-p}{the} status of a service changes. \item\end{DoxyCompactList}\item 
const \hyperlink{classServiceBase}{ServiceBase} $\ast$ \hyperlink{classVifManager_a96a61f6508b9c5de596f5db70825dc20}{ifmgr\_\-mirror\_\-service\_\-base} () const 
\begin{DoxyCompactList}\small\item\em Get a reference to \hyperlink{protocolthe-p}{the} service base of \hyperlink{protocolthe-p}{the} interface manager. \item\end{DoxyCompactList}\item 
const \hyperlink{classIfMgrIfTree}{IfMgrIfTree} \& \hyperlink{classVifManager_a95632682464a3b1a74a02ee8aa0d4b79}{ifmgr\_\-iftree} () const 
\begin{DoxyCompactList}\small\item\em Get a reference to \hyperlink{protocolthe-p}{the} interface manager tree. \item\end{DoxyCompactList}\item 
int \hyperlink{classVifManager_a67213dc249957f742ea6953c460e0eef}{ifmgr\_\-startup} ()
\begin{DoxyCompactList}\small\item\em Initiate startup of \hyperlink{protocolthe-p}{the} interface manager. \item\end{DoxyCompactList}\item 
int \hyperlink{classVifManager_adda16831c84a7b5833cc13611d0e8e34}{ifmgr\_\-shutdown} ()
\begin{DoxyCompactList}\small\item\em Initiate shutdown of \hyperlink{protocolthe-p}{the} interface manager. \item\end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{classVifManager_a7ffc5150a70259c7aee894a7e7d15806}{
\hyperlink{classXrlRouter}{XrlRouter} \& {\bfseries \_\-xrl\_\-router}}
\label{classVifManager_a7ffc5150a70259c7aee894a7e7d15806}

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

\item 
\hypertarget{classVifManager_a2dd19ce25d83f7b1bacf2a521b44353b}{
\hyperlink{classRibManager}{RibManager} $\ast$ {\bfseries \_\-rib\_\-manager}}
\label{classVifManager_a2dd19ce25d83f7b1bacf2a521b44353b}

\item 
\hypertarget{classVifManager_adca041b9538c43a38d8283853b3e8c25}{
\hyperlink{classIfMgrXrlMirror}{IfMgrXrlMirror} {\bfseries \_\-ifmgr}}
\label{classVifManager_adca041b9538c43a38d8283853b3e8c25}

\item 
\hypertarget{classVifManager_aab7bdeddb8230d09dcc08d80d585c5bb}{
\hyperlink{classIfMgrIfTree}{IfMgrIfTree} {\bfseries \_\-iftree}}
\label{classVifManager_aab7bdeddb8230d09dcc08d80d585c5bb}

\item 
\hypertarget{classVifManager_ad2da0ad789bb7a130db3d68e46324353}{
\hyperlink{classIfMgrIfTree}{IfMgrIfTree} {\bfseries \_\-old\_\-iftree}}
\label{classVifManager_ad2da0ad789bb7a130db3d68e46324353}

\item 
\hypertarget{classVifManager_a4681b39b1afecfe9241a87d8fc8d8b59}{
size\_\-t {\bfseries \_\-startup\_\-requests\_\-n}}
\label{classVifManager_a4681b39b1afecfe9241a87d8fc8d8b59}

\item 
\hypertarget{classVifManager_a665199255c8bcdb11c77e85910bb379f}{
size\_\-t {\bfseries \_\-shutdown\_\-requests\_\-n}}
\label{classVifManager_a665199255c8bcdb11c77e85910bb379f}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
\hyperlink{classVifManager}{VifManager} keeps track of \hyperlink{protocolthe-p}{the} VIFs currently enabled in \hyperlink{protocolthe-p}{the} FEA. The \hyperlink{classRIB}{RIB} process has a single \hyperlink{classVifManager}{VifManager} instance, which registers with \hyperlink{protocolthe-p}{the} FEA process to discover \hyperlink{protocolthe-p}{the} VIFs on this router and their IP addresses and prefixes. When \hyperlink{protocolthe-p}{the} VIFs or their configuration in \hyperlink{protocolthe-p}{the} FEA change, \hyperlink{protocolthe-p}{the} \hyperlink{classVifManager}{VifManager} will be notified, and it will update \hyperlink{protocolthe-p}{the} RIBs appropriately. The RIBs need to know about VIFs and VIF addresses to decide which routes have nexthops that are on directly connected subnets, and which are nexthops that need to be resolved using other routes to figure out where next to send \hyperlink{protocolthe-p}{the} packet. Only routes with nexthops that are on directly connected subnets can be sent to \hyperlink{protocolthe-p}{the} FEA. 

\subsection{Constructor \& Destructor Documentation}
\hypertarget{classVifManager_afda23ea71ef03d591ec86e2725aa56e6}{
\index{VifManager@{VifManager}!VifManager@{VifManager}}
\index{VifManager@{VifManager}!VifManager@{VifManager}}
\subsubsection[{VifManager}]{\setlength{\rightskip}{0pt plus 5cm}VifManager::VifManager (
\begin{DoxyParamCaption}
\item[{{\bf XrlRouter} \&}]{xrl\_\-router, }
\item[{{\bf EventLoop} \&}]{eventloop, }
\item[{{\bf RibManager} $\ast$}]{rib\_\-manager, }
\item[{const string \&}]{fea\_\-target}
\end{DoxyParamCaption}
)}}
\label{classVifManager_afda23ea71ef03d591ec86e2725aa56e6}


\hyperlink{classVifManager}{VifManager} constructor. 


\begin{DoxyParams}{Parameters}
{\em xrl\_\-router} & this process's XRL router. \\
\hline
{\em eventloop} & this process's \hyperlink{classEventLoop}{EventLoop}. \\
\hline
{\em rib\_\-manager} & this class contains \hyperlink{protocolthe-p}{the} actual RIBs for \hyperlink{classIPv4}{IPv4} and \hyperlink{classIPv6}{IPv6}, unicast and multicast. \\
\hline
{\em fea\_\-target} & \hyperlink{protocolthe-p}{the} FEA target name. \\
\hline
\end{DoxyParams}


\subsection{Member Function Documentation}
\hypertarget{classVifManager_a7a0a934e7b855e1b74a67114b112df9d}{
\index{VifManager@{VifManager}!final\_\-start@{final\_\-start}}
\index{final\_\-start@{final\_\-start}!VifManager@{VifManager}}
\subsubsection[{final\_\-start}]{\setlength{\rightskip}{0pt plus 5cm}int VifManager::final\_\-start (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classVifManager_a7a0a934e7b855e1b74a67114b112df9d}


Completely start \hyperlink{protocolthe-p}{the} node operation. 

This method should be called internally after \hyperlink{classVifManager_a3115c15090aa81f625f450cdaab864aa}{VifManager::start()} to complete \hyperlink{protocolthe-p}{the} job.

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classVifManager_a0adfd1ce4ed5a9b663b32ad2df9ba45e}{
\index{VifManager@{VifManager}!final\_\-stop@{final\_\-stop}}
\index{final\_\-stop@{final\_\-stop}!VifManager@{VifManager}}
\subsubsection[{final\_\-stop}]{\setlength{\rightskip}{0pt plus 5cm}int VifManager::final\_\-stop (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classVifManager_a0adfd1ce4ed5a9b663b32ad2df9ba45e}


Completely stop \hyperlink{protocolthe-p}{the} node operation. 

This method should be called internally after \hyperlink{classVifManager_a80109b8a95b4b0731d697719242cdac0}{VifManager::stop()} to complete \hyperlink{protocolthe-p}{the} job.

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classVifManager_a95632682464a3b1a74a02ee8aa0d4b79}{
\index{VifManager@{VifManager}!ifmgr\_\-iftree@{ifmgr\_\-iftree}}
\index{ifmgr\_\-iftree@{ifmgr\_\-iftree}!VifManager@{VifManager}}
\subsubsection[{ifmgr\_\-iftree}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf IfMgrIfTree}\& VifManager::ifmgr\_\-iftree (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline, private\mbox{]}}}}
\label{classVifManager_a95632682464a3b1a74a02ee8aa0d4b79}


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

\begin{DoxyReturn}{Returns}
a reference to \hyperlink{protocolthe-p}{the} interface manager tree. 
\end{DoxyReturn}
\hypertarget{classVifManager_a96a61f6508b9c5de596f5db70825dc20}{
\index{VifManager@{VifManager}!ifmgr\_\-mirror\_\-service\_\-base@{ifmgr\_\-mirror\_\-service\_\-base}}
\index{ifmgr\_\-mirror\_\-service\_\-base@{ifmgr\_\-mirror\_\-service\_\-base}!VifManager@{VifManager}}
\subsubsection[{ifmgr\_\-mirror\_\-service\_\-base}]{\setlength{\rightskip}{0pt plus 5cm}const {\bf ServiceBase}$\ast$ VifManager::ifmgr\_\-mirror\_\-service\_\-base (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
) const\hspace{0.3cm}{\ttfamily  \mbox{[}inline, private\mbox{]}}}}
\label{classVifManager_a96a61f6508b9c5de596f5db70825dc20}


Get a reference to \hyperlink{protocolthe-p}{the} service base of \hyperlink{protocolthe-p}{the} interface manager. 

\begin{DoxyReturn}{Returns}
a reference to \hyperlink{protocolthe-p}{the} service base of \hyperlink{protocolthe-p}{the} interface manager. 
\end{DoxyReturn}
\hypertarget{classVifManager_adda16831c84a7b5833cc13611d0e8e34}{
\index{VifManager@{VifManager}!ifmgr\_\-shutdown@{ifmgr\_\-shutdown}}
\index{ifmgr\_\-shutdown@{ifmgr\_\-shutdown}!VifManager@{VifManager}}
\subsubsection[{ifmgr\_\-shutdown}]{\setlength{\rightskip}{0pt plus 5cm}int VifManager::ifmgr\_\-shutdown (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classVifManager_adda16831c84a7b5833cc13611d0e8e34}


Initiate shutdown of \hyperlink{protocolthe-p}{the} interface manager. 

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classVifManager_a67213dc249957f742ea6953c460e0eef}{
\index{VifManager@{VifManager}!ifmgr\_\-startup@{ifmgr\_\-startup}}
\index{ifmgr\_\-startup@{ifmgr\_\-startup}!VifManager@{VifManager}}
\subsubsection[{ifmgr\_\-startup}]{\setlength{\rightskip}{0pt plus 5cm}int VifManager::ifmgr\_\-startup (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private\mbox{]}}}}
\label{classVifManager_a67213dc249957f742ea6953c460e0eef}


Initiate startup of \hyperlink{protocolthe-p}{the} interface manager. 

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}
\hypertarget{classVifManager_a3115c15090aa81f625f450cdaab864aa}{
\index{VifManager@{VifManager}!start@{start}}
\index{start@{start}!VifManager@{VifManager}}
\subsubsection[{start}]{\setlength{\rightskip}{0pt plus 5cm}int VifManager::start (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classVifManager_a3115c15090aa81f625f450cdaab864aa}


Start operation. 

Start \hyperlink{protocolthe-p}{the} process of registering with \hyperlink{protocolthe-p}{the} FEA, etc. After \hyperlink{protocolthe-p}{the} startup operations are completed, \hyperlink{classVifManager_a7a0a934e7b855e1b74a67114b112df9d}{VifManager::final\_\-start()} is called internally to complete \hyperlink{protocolthe-p}{the} job.

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Reimplemented from \hyperlink{classProtoState_a5a0cf7fc68b9db681ce8b8fca9635e07}{ProtoState}.

\hypertarget{classVifManager_aad0d09d0c5d25c6c0b4c3f1d1130acd8}{
\index{VifManager@{VifManager}!status\_\-change@{status\_\-change}}
\index{status\_\-change@{status\_\-change}!VifManager@{VifManager}}
\subsubsection[{status\_\-change}]{\setlength{\rightskip}{0pt plus 5cm}void VifManager::status\_\-change (
\begin{DoxyParamCaption}
\item[{{\bf ServiceBase} $\ast$}]{service, }
\item[{ServiceStatus}]{old\_\-status, }
\item[{ServiceStatus}]{new\_\-status}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily  \mbox{[}private, virtual\mbox{]}}}}
\label{classVifManager_aad0d09d0c5d25c6c0b4c3f1d1130acd8}


A method invoked when \hyperlink{protocolthe-p}{the} status of a service changes. 


\begin{DoxyParams}{Parameters}
{\em service} & \hyperlink{protocolthe-p}{the} service whose status has changed. \\
\hline
{\em old\_\-status} & \hyperlink{protocolthe-p}{the} old status. \\
\hline
{\em new\_\-status} & \hyperlink{protocolthe-p}{the} new status. \\
\hline
\end{DoxyParams}


Implements \hyperlink{classServiceChangeObserverBase}{ServiceChangeObserverBase}.

\hypertarget{classVifManager_a80109b8a95b4b0731d697719242cdac0}{
\index{VifManager@{VifManager}!stop@{stop}}
\index{stop@{stop}!VifManager@{VifManager}}
\subsubsection[{stop}]{\setlength{\rightskip}{0pt plus 5cm}int VifManager::stop (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}
\label{classVifManager_a80109b8a95b4b0731d697719242cdac0}


Stop operation. 

Gracefully stop operation. After \hyperlink{protocolthe-p}{the} shutdown operations are completed, \hyperlink{classVifManager_a0adfd1ce4ed5a9b663b32ad2df9ba45e}{VifManager::final\_\-stop()} is called internally to complete \hyperlink{protocolthe-p}{the} job.

\begin{DoxyReturn}{Returns}
XORP\_\-OK on success, otherwise XORP\_\-ERROR. 
\end{DoxyReturn}


Reimplemented from \hyperlink{classProtoState_a00a8d35d02b0ce61a6b012326e81878c}{ProtoState}.



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