\doxysection{aspa\+\_\+private.\+h}
\hypertarget{aspa__private_8h_source}{}\label{aspa__private_8h_source}\index{rtrlib/aspa/aspa\_private.h@{rtrlib/aspa/aspa\_private.h}}
\mbox{\hyperlink{aspa__private_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{00001\ \textcolor{comment}{/*}}
\DoxyCodeLine{00002\ \textcolor{comment}{\ *\ This\ file\ is\ part\ of\ RTRlib.}}
\DoxyCodeLine{00003\ \textcolor{comment}{\ *}}
\DoxyCodeLine{00004\ \textcolor{comment}{\ *\ This\ file\ is\ subject\ to\ the\ terms\ and\ conditions\ of\ the\ MIT\ license.}}
\DoxyCodeLine{00005\ \textcolor{comment}{\ *\ See\ the\ file\ LICENSE\ in\ the\ top\ level\ directory\ for\ more\ details.}}
\DoxyCodeLine{00006\ \textcolor{comment}{\ *}}
\DoxyCodeLine{00007\ \textcolor{comment}{\ *\ Website:\ http://rtrlib.realmv6.org/}}
\DoxyCodeLine{00008\ \textcolor{comment}{\ */}}
\DoxyCodeLine{00009\ }
\DoxyCodeLine{00090\ \textcolor{preprocessor}{\#ifndef\ RTR\_ASPA\_PRIVATE\_H}}
\DoxyCodeLine{00091\ \textcolor{preprocessor}{\#define\ RTR\_ASPA\_PRIVATE\_H}}
\DoxyCodeLine{00092\ }
\DoxyCodeLine{00093\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{aspa_8h}{aspa.h}}"{}}}
\DoxyCodeLine{00094\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{log__private_8h}{rtrlib/lib/log\_private.h}}"{}}}
\DoxyCodeLine{00095\ \textcolor{preprocessor}{\#include\ "{}\mbox{\hyperlink{rtr_8h}{rtrlib/rtr/rtr.h}}"{}}}
\DoxyCodeLine{00096\ }
\DoxyCodeLine{00097\ \textcolor{preprocessor}{\#include\ <stdbool.h>}}
\DoxyCodeLine{00098\ \textcolor{preprocessor}{\#include\ <stdint.h>}}
\DoxyCodeLine{00099\ }
\DoxyCodeLine{00100\ \textcolor{preprocessor}{\#define\ ASPA\_NOTIFY\_NO\_OPS\ 0}}
\DoxyCodeLine{00101\ }
\DoxyCodeLine{00102\ \textcolor{preprocessor}{\#define\ ASPA\_DBG1(a)\ lrtr\_dbg("{}ASPA:\ "{}\ a)}}
\DoxyCodeLine{00103\ }
\DoxyCodeLine{00104\ \textcolor{comment}{//\ MARK:\ -\/\ Verification}}
\DoxyCodeLine{00105\ }
\DoxyCodeLine{00106\ \textcolor{keyword}{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}}\ \};}
\DoxyCodeLine{00107\ }
\DoxyCodeLine{00112\ \textcolor{keyword}{enum}\ \mbox{\hyperlink{group__mod__aspa__h_ga620bdcc08f49a3cd6aa2ae843d4910d8}{aspa\_hop\_result}}\ \mbox{\hyperlink{group__mod__aspa__h_ga345af12295112b728171c67ed965c2cb}{aspa\_check\_hop}}(\textcolor{keyword}{struct}\ \mbox{\hyperlink{structaspa__table}{aspa\_table}}\ *\mbox{\hyperlink{structaspa__table}{aspa\_table}},\ uint32\_t\ customer\_asn,\ uint32\_t\ provider\_asn);}
\DoxyCodeLine{00113\ }
\DoxyCodeLine{00114\ \textcolor{comment}{//\ MARK:\ -\/\ Storage}}
\DoxyCodeLine{00122\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{structaspa__store__node}{aspa\_store\_node}}\ \{}
\DoxyCodeLine{00123\ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{structaspa__array}{aspa\_array}}\ *\mbox{\hyperlink{structaspa__store__node_ab3941a24bae27f5b95780ca2cd0130fd}{aspa\_array}};}
\DoxyCodeLine{00124\ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{structrtr__socket}{rtr\_socket}}\ *\mbox{\hyperlink{structaspa__store__node_ac116ae20df9768d065eb15f888b08e89}{rtr\_socket}};}
\DoxyCodeLine{00125\ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{structaspa__store__node}{aspa\_store\_node}}\ *\mbox{\hyperlink{structaspa__store__node_a2ecd2c88a399562ab2a36dcdb59f718c}{next}};}
\DoxyCodeLine{00126\ \};}
\DoxyCodeLine{00127\ }
\DoxyCodeLine{00138\ \textcolor{keyword}{enum}\ \mbox{\hyperlink{group__mod__aspa__h_ga18e5d060687b3cdf30d418b2a9639e6b}{aspa\_status}}\ \mbox{\hyperlink{group__mod__aspa__h_gad0a535d13461bfd72e2fba79c21830a5}{aspa\_table\_src\_replace}}(\textcolor{keyword}{struct}\ \mbox{\hyperlink{structaspa__table}{aspa\_table}}\ *dst,\ \textcolor{keyword}{struct}\ \mbox{\hyperlink{structaspa__table}{aspa\_table}}\ *src,\ \textcolor{keyword}{struct}\ \mbox{\hyperlink{structrtr__socket}{rtr\_socket}}\ *\mbox{\hyperlink{structrtr__socket}{rtr\_socket}},}
\DoxyCodeLine{00139\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{bool}\ notify\_dst,\ \textcolor{keywordtype}{bool}\ notify\_src);}
\DoxyCodeLine{00140\ }
\DoxyCodeLine{00141\ \textcolor{comment}{//\ MARK:\ -\/\ Updating}}
\DoxyCodeLine{00151\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{structaspa__update__operation}{aspa\_update\_operation}}\ \{}
\DoxyCodeLine{00152\ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{size\_t}\ \mbox{\hyperlink{structaspa__update__operation_a9863632825f063aa2c6f444b7b0d6610}{index}};}
\DoxyCodeLine{00153\ \ \ \ \ \ \ \ \ \textcolor{keyword}{enum}\ aspa\_operation\_type\ \mbox{\hyperlink{structaspa__update__operation_a9ddd8092ef7c0977b0d2d85315330dce}{type}};}
\DoxyCodeLine{00154\ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{structaspa__record}{aspa\_record}}\ \mbox{\hyperlink{structaspa__update__operation_a4d338fef84b7db7fc8888e10ddc6dfb0}{record}};}
\DoxyCodeLine{00155\ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{bool}\ \mbox{\hyperlink{structaspa__update__operation_a4e56a6ecb8e4c7c492b259b98a041c9a}{is\_no\_op}};}
\DoxyCodeLine{00156\ \};}
\DoxyCodeLine{00157\ }
\DoxyCodeLine{00158\ \textcolor{comment}{//\ MARK:\ -\/\ Swap-\/In\ Update\ Mechanism}}
\DoxyCodeLine{00170\ \textcolor{keyword}{struct\ }\mbox{\hyperlink{structaspa__update}{aspa\_update}}\ \{}
\DoxyCodeLine{00171\ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{structaspa__table}{aspa\_table}}\ *\mbox{\hyperlink{structaspa__update_a43b423baf8f70bc647b97350f91d962f}{table}};}
\DoxyCodeLine{00172\ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{structaspa__update__operation}{aspa\_update\_operation}}\ *\mbox{\hyperlink{structaspa__update_a55b05fc50910c9876373893308d3d58d}{operations}};}
\DoxyCodeLine{00173\ \ \ \ \ \ \ \ \ \textcolor{keywordtype}{size\_t}\ \mbox{\hyperlink{structaspa__update_ae34b222ab7f01b23aa56097e21b54fea}{operation\_count}};}
\DoxyCodeLine{00174\ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{structaspa__update__operation}{aspa\_update\_operation}}\ *\mbox{\hyperlink{structaspa__update_a7e3c4a0b2a00a2715495651112fed519}{failed\_operation}};}
\DoxyCodeLine{00175\ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{structaspa__store__node}{aspa\_store\_node}}\ *\mbox{\hyperlink{structaspa__update_ad81da8df0ba8ca73a44681c0ad4bf104}{node}};}
\DoxyCodeLine{00176\ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct\ }\mbox{\hyperlink{structaspa__array}{aspa\_array}}\ *\mbox{\hyperlink{structaspa__update_ab18a9d1ae4f69c1ab59ed3721756085c}{new\_array}};}
\DoxyCodeLine{00177\ \};}
\DoxyCodeLine{00178\ }
\DoxyCodeLine{00201\ \textcolor{keyword}{enum}\ \mbox{\hyperlink{group__mod__aspa__h_ga18e5d060687b3cdf30d418b2a9639e6b}{aspa\_status}}\ \mbox{\hyperlink{group__mod__aspa__h_ga345fa1009c45167be8101732e905263a}{aspa\_table\_update\_swap\_in\_compute}}(\textcolor{keyword}{struct}\ \mbox{\hyperlink{structaspa__table}{aspa\_table}}\ *\mbox{\hyperlink{structaspa__table}{aspa\_table}},\ \textcolor{keyword}{struct}\ \mbox{\hyperlink{structrtr__socket}{rtr\_socket}}\ *\mbox{\hyperlink{structrtr__socket}{rtr\_socket}},}
\DoxyCodeLine{00202\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct}\ \mbox{\hyperlink{structaspa__update__operation}{aspa\_update\_operation}}\ *operations,\ \textcolor{keywordtype}{size\_t}\ count,}
\DoxyCodeLine{00203\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct}\ \mbox{\hyperlink{structaspa__update}{aspa\_update}}\ **update);}
\DoxyCodeLine{00204\ }
\DoxyCodeLine{00211\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{group__mod__aspa__h_ga5062a9b2c0c2c809fd1495d69ef1e2ee}{aspa\_table\_update\_swap\_in\_apply}}(\textcolor{keyword}{struct}\ \mbox{\hyperlink{structaspa__update}{aspa\_update}}\ **update);}
\DoxyCodeLine{00212\ }
\DoxyCodeLine{00219\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{group__mod__aspa__h_ga04b379b6d202be04df83125d202861b9}{aspa\_table\_update\_swap\_in\_discard}}(\textcolor{keyword}{struct}\ \mbox{\hyperlink{structaspa__update}{aspa\_update}}\ **update);}
\DoxyCodeLine{00220\ }
\DoxyCodeLine{00221\ \textcolor{comment}{//\ MARK:\ -\/\ In-\/Place\ Update\ Mechanism}}
\DoxyCodeLine{00222\ }
\DoxyCodeLine{00240\ \textcolor{keyword}{enum}\ \mbox{\hyperlink{group__mod__aspa__h_ga18e5d060687b3cdf30d418b2a9639e6b}{aspa\_status}}\ \mbox{\hyperlink{group__mod__aspa__h_ga737e5471293aa6f82a7d6232757019c5}{aspa\_table\_update\_in\_place}}(\textcolor{keyword}{struct}\ \mbox{\hyperlink{structaspa__table}{aspa\_table}}\ *\mbox{\hyperlink{structaspa__table}{aspa\_table}},\ \textcolor{keyword}{struct}\ \mbox{\hyperlink{structrtr__socket}{rtr\_socket}}\ *\mbox{\hyperlink{structrtr__socket}{rtr\_socket}},}
\DoxyCodeLine{00241\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct}\ \mbox{\hyperlink{structaspa__update__operation}{aspa\_update\_operation}}\ *operations,\ \textcolor{keywordtype}{size\_t}\ count,}
\DoxyCodeLine{00242\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct}\ \mbox{\hyperlink{structaspa__update__operation}{aspa\_update\_operation}}\ **failed\_operation);}
\DoxyCodeLine{00243\ }
\DoxyCodeLine{00258\ \textcolor{keyword}{enum}\ \mbox{\hyperlink{group__mod__aspa__h_ga18e5d060687b3cdf30d418b2a9639e6b}{aspa\_status}}\ \mbox{\hyperlink{group__mod__aspa__h_ga72f4845ce23b5b5c228a367a4ad15a67}{aspa\_table\_update\_in\_place\_undo}}(\textcolor{keyword}{struct}\ \mbox{\hyperlink{structaspa__table}{aspa\_table}}\ *\mbox{\hyperlink{structaspa__table}{aspa\_table}},\ \textcolor{keyword}{struct}\ \mbox{\hyperlink{structrtr__socket}{rtr\_socket}}\ *\mbox{\hyperlink{structrtr__socket}{rtr\_socket}},}
\DoxyCodeLine{00259\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct}\ \mbox{\hyperlink{structaspa__update__operation}{aspa\_update\_operation}}\ *operations,\ \textcolor{keywordtype}{size\_t}\ count,}
\DoxyCodeLine{00260\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \textcolor{keyword}{struct}\ \mbox{\hyperlink{structaspa__update__operation}{aspa\_update\_operation}}\ *failed\_operation);}
\DoxyCodeLine{00261\ }
\DoxyCodeLine{00267\ \textcolor{keywordtype}{void}\ \mbox{\hyperlink{group__mod__aspa__h_ga63c7569dee91f327ee65bd8efa14a128}{aspa\_table\_update\_in\_place\_cleanup}}(\textcolor{keyword}{struct}\ \mbox{\hyperlink{structaspa__update__operation}{aspa\_update\_operation}}\ **operations,\ \textcolor{keywordtype}{size\_t}\ count);}
\DoxyCodeLine{00268\ }
\DoxyCodeLine{00269\ \textcolor{preprocessor}{\#endif\ }\textcolor{comment}{/*\ RTR\_ASPA\_PRIVATE\_H\ */}\textcolor{preprocessor}{}}

\end{DoxyCode}
