\doxysection{rtrlib/aspa/aspa\+\_\+private.h File Reference}
\hypertarget{aspa__private_8h}{}\label{aspa__private_8h}\index{rtrlib/aspa/aspa\_private.h@{rtrlib/aspa/aspa\_private.h}}
{\ttfamily \#include "{}aspa.\+h"{}}\newline
{\ttfamily \#include "{}rtrlib/lib/log\+\_\+private.\+h"{}}\newline
{\ttfamily \#include "{}rtrlib/rtr/rtr.\+h"{}}\newline
{\ttfamily \#include $<$stdbool.\+h$>$}\newline
{\ttfamily \#include $<$stdint.\+h$>$}\newline
\doxysubsubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{structaspa__store__node}{aspa\+\_\+store\+\_\+node}}
\begin{DoxyCompactList}\small\item\em A linked list storing the bond between a {\ttfamily \doxylink{structrtr__socket}{rtr\+\_\+socket}} and an {\ttfamily \doxylink{structaspa__array}{aspa\+\_\+array}} . \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structaspa__update__operation}{aspa\+\_\+update\+\_\+operation}}
\begin{DoxyCompactList}\small\item\em A struct describing a specific type of operation that should be performed using the attached ASPA record. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structaspa__update}{aspa\+\_\+update}}
\begin{DoxyCompactList}\small\item\em Computed ASPA update. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \mbox{\hyperlink{group__mod__aspa__h_ga99aecfd7125862a9ccf646089a07ff99}{ASPA\+\_\+\+NOTIFY\+\_\+\+NO\+\_\+\+OPS}}~0
\item 
\#define \mbox{\hyperlink{group__mod__aspa__h_ga14e5e040ed1e623926190fb8ed2540d9}{ASPA\+\_\+\+DBG1}}(a)~\mbox{\hyperlink{log__private_8h_abb57f299264865eb02379019cfe4df0c}{lrtr\+\_\+dbg}}("{}ASPA\+: "{} a)
\end{DoxyCompactItemize}
\doxysubsubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \mbox{\hyperlink{group__mod__aspa__h_ga620bdcc08f49a3cd6aa2ae843d4910d8}{aspa\+\_\+hop\+\_\+result}} \{ \mbox{\hyperlink{group__mod__aspa__h_gga620bdcc08f49a3cd6aa2ae843d4910d8aeb9b30298feef9f705089ec21dd62ee4}{ASPA\+\_\+\+NO\+\_\+\+ATTESTATION}}
, \mbox{\hyperlink{group__mod__aspa__h_gga620bdcc08f49a3cd6aa2ae843d4910d8aace21d81320b08a8ff499e24287b5cf9}{ASPA\+\_\+\+NOT\+\_\+\+PROVIDER\+\_\+\+PLUS}}
, \mbox{\hyperlink{group__mod__aspa__h_gga620bdcc08f49a3cd6aa2ae843d4910d8adc581664da5df8ca79f3e5964ff90f89}{ASPA\+\_\+\+PROVIDER\+\_\+\+PLUS}}
 \}
\end{DoxyCompactItemize}
\doxysubsubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
enum \mbox{\hyperlink{group__mod__aspa__h_ga620bdcc08f49a3cd6aa2ae843d4910d8}{aspa\+\_\+hop\+\_\+result}} \mbox{\hyperlink{group__mod__aspa__h_ga345af12295112b728171c67ed965c2cb}{aspa\+\_\+check\+\_\+hop}} (struct \mbox{\hyperlink{structaspa__table}{aspa\+\_\+table}} \texorpdfstring{$\ast$}{*}\mbox{\hyperlink{structaspa__table}{aspa\+\_\+table}}, uint32\+\_\+t customer\+\_\+asn, uint32\+\_\+t provider\+\_\+asn)
\begin{DoxyCompactList}\small\item\em Checks a hop in the given {\ttfamily AS\+\_\+\+PATH}. \end{DoxyCompactList}\item 
enum \mbox{\hyperlink{group__mod__aspa__h_ga18e5d060687b3cdf30d418b2a9639e6b}{aspa\+\_\+status}} \mbox{\hyperlink{group__mod__aspa__h_gad0a535d13461bfd72e2fba79c21830a5}{aspa\+\_\+table\+\_\+src\+\_\+replace}} (struct \mbox{\hyperlink{structaspa__table}{aspa\+\_\+table}} \texorpdfstring{$\ast$}{*}dst, struct \mbox{\hyperlink{structaspa__table}{aspa\+\_\+table}} \texorpdfstring{$\ast$}{*}src, struct \mbox{\hyperlink{structrtr__socket}{rtr\+\_\+socket}} \texorpdfstring{$\ast$}{*}\mbox{\hyperlink{structrtr__socket}{rtr\+\_\+socket}}, bool notify\+\_\+dst, bool notify\+\_\+src)
\begin{DoxyCompactList}\small\item\em Replaces all ASPA records associated with the given socket with the records in the src table. \end{DoxyCompactList}\item 
enum \mbox{\hyperlink{group__mod__aspa__h_ga18e5d060687b3cdf30d418b2a9639e6b}{aspa\+\_\+status}} \mbox{\hyperlink{group__mod__aspa__h_ga345fa1009c45167be8101732e905263a}{aspa\+\_\+table\+\_\+update\+\_\+swap\+\_\+in\+\_\+compute}} (struct \mbox{\hyperlink{structaspa__table}{aspa\+\_\+table}} \texorpdfstring{$\ast$}{*}\mbox{\hyperlink{structaspa__table}{aspa\+\_\+table}}, struct \mbox{\hyperlink{structrtr__socket}{rtr\+\_\+socket}} \texorpdfstring{$\ast$}{*}\mbox{\hyperlink{structrtr__socket}{rtr\+\_\+socket}}, struct \mbox{\hyperlink{structaspa__update__operation}{aspa\+\_\+update\+\_\+operation}} \texorpdfstring{$\ast$}{*}operations, size\+\_\+t count, struct \mbox{\hyperlink{structaspa__update}{aspa\+\_\+update}} \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}update)
\begin{DoxyCompactList}\small\item\em Computes an update structure that can later be applied to the given ASPA table. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__mod__aspa__h_ga5062a9b2c0c2c809fd1495d69ef1e2ee}{aspa\+\_\+table\+\_\+update\+\_\+swap\+\_\+in\+\_\+apply}} (struct \mbox{\hyperlink{structaspa__update}{aspa\+\_\+update}} \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}update)
\begin{DoxyCompactList}\small\item\em Applies the given update, as previously computed by {\ttfamily aspa\+\_\+table\+\_\+update\+\_\+swap\+\_\+in\+\_\+compute}, releases memory allocated while computing the update and unlocks update lock. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__mod__aspa__h_ga04b379b6d202be04df83125d202861b9}{aspa\+\_\+table\+\_\+update\+\_\+swap\+\_\+in\+\_\+discard}} (struct \mbox{\hyperlink{structaspa__update}{aspa\+\_\+update}} \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}update)
\begin{DoxyCompactList}\small\item\em Discards the given update, releases memory allocated while computing the update and unlocks update lock. \end{DoxyCompactList}\item 
enum \mbox{\hyperlink{group__mod__aspa__h_ga18e5d060687b3cdf30d418b2a9639e6b}{aspa\+\_\+status}} \mbox{\hyperlink{group__mod__aspa__h_ga737e5471293aa6f82a7d6232757019c5}{aspa\+\_\+table\+\_\+update\+\_\+in\+\_\+place}} (struct \mbox{\hyperlink{structaspa__table}{aspa\+\_\+table}} \texorpdfstring{$\ast$}{*}\mbox{\hyperlink{structaspa__table}{aspa\+\_\+table}}, struct \mbox{\hyperlink{structrtr__socket}{rtr\+\_\+socket}} \texorpdfstring{$\ast$}{*}\mbox{\hyperlink{structrtr__socket}{rtr\+\_\+socket}}, struct \mbox{\hyperlink{structaspa__update__operation}{aspa\+\_\+update\+\_\+operation}} \texorpdfstring{$\ast$}{*}operations, size\+\_\+t count, struct \mbox{\hyperlink{structaspa__update__operation}{aspa\+\_\+update\+\_\+operation}} \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}failed\+\_\+operation)
\begin{DoxyCompactList}\small\item\em Updates the given ASPA table. \end{DoxyCompactList}\item 
enum \mbox{\hyperlink{group__mod__aspa__h_ga18e5d060687b3cdf30d418b2a9639e6b}{aspa\+\_\+status}} \mbox{\hyperlink{group__mod__aspa__h_ga72f4845ce23b5b5c228a367a4ad15a67}{aspa\+\_\+table\+\_\+update\+\_\+in\+\_\+place\+\_\+undo}} (struct \mbox{\hyperlink{structaspa__table}{aspa\+\_\+table}} \texorpdfstring{$\ast$}{*}\mbox{\hyperlink{structaspa__table}{aspa\+\_\+table}}, struct \mbox{\hyperlink{structrtr__socket}{rtr\+\_\+socket}} \texorpdfstring{$\ast$}{*}\mbox{\hyperlink{structrtr__socket}{rtr\+\_\+socket}}, struct \mbox{\hyperlink{structaspa__update__operation}{aspa\+\_\+update\+\_\+operation}} \texorpdfstring{$\ast$}{*}operations, size\+\_\+t count, struct \mbox{\hyperlink{structaspa__update__operation}{aspa\+\_\+update\+\_\+operation}} \texorpdfstring{$\ast$}{*}failed\+\_\+operation)
\begin{DoxyCompactList}\small\item\em Tries to undo {\ttfamily operations} up to {\ttfamily failed\+\_\+operation} and then releases all operations. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__mod__aspa__h_ga63c7569dee91f327ee65bd8efa14a128}{aspa\+\_\+table\+\_\+update\+\_\+in\+\_\+place\+\_\+cleanup}} (struct \mbox{\hyperlink{structaspa__update__operation}{aspa\+\_\+update\+\_\+operation}} \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}operations, size\+\_\+t count)
\begin{DoxyCompactList}\small\item\em Releases operations and unused provider arrays. \end{DoxyCompactList}\end{DoxyCompactItemize}
