\doxysubsection{BGPsec AS path validation}
\hypertarget{group__mod__bgpsec__h}{}\label{group__mod__bgpsec__h}\index{BGPsec AS path validation@{BGPsec AS path validation}}


BGPsec allows for validation of the BGPsec\+\_\+\+PATH attribute of a BGPsec update.  


\doxysubsubsubsection*{Data Structures}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}}
\begin{DoxyCompactList}\small\item\em A single Secure Path Segment. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}}
\begin{DoxyCompactList}\small\item\em A single Signature Segment. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structrtr__bgpsec__nlri}{rtr\+\_\+bgpsec\+\_\+nlri}}
\begin{DoxyCompactList}\small\item\em This struct contains the Network Layer Reachability Information (NLRI). \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}}
\begin{DoxyCompactList}\small\item\em The data that is passed to the rtr\+\_\+mgr\+\_\+bgpsec\+\_\+validate\+\_\+as\+\_\+path function. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \mbox{\hyperlink{group__mod__bgpsec__h_ga10c896b36edae4ffef5f4680c85ff54e}{BGPSEC\+\_\+\+IPV4}}~1
\item 
\#define \mbox{\hyperlink{group__mod__bgpsec__h_ga8c1b5ec5499e8907aea105d45d2bab99}{BGPSEC\+\_\+\+IPV6}}~2
\end{DoxyCompactItemize}
\doxysubsubsubsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \mbox{\hyperlink{group__mod__bgpsec__h_ga02fc9657b1a370e44d40cf158a895fee}{rtr\+\_\+bgpsec\+\_\+algorithm\+\_\+suites}} \{ \mbox{\hyperlink{group__mod__bgpsec__h_gga02fc9657b1a370e44d40cf158a895feea810d0ce8d5538e90ae797516fce0403a}{RTR\+\_\+\+BGPSEC\+\_\+\+ALGORITHM\+\_\+\+SUITE\+\_\+1}} = 1
 \}
\begin{DoxyCompactList}\small\item\em All supported algorithm suites. \end{DoxyCompactList}\item 
enum \mbox{\hyperlink{group__mod__bgpsec__h_ga68db4b8982e72512221963390473920d}{rtr\+\_\+bgpsec\+\_\+rtvals}} \{ \newline
\mbox{\hyperlink{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920dac4afb6c9d62f7348067da39406a30936}{RTR\+\_\+\+BGPSEC\+\_\+\+NOT\+\_\+\+VALID}} = 2
, \mbox{\hyperlink{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920da5bc92f4a86ecb254e085ee565c630425}{RTR\+\_\+\+BGPSEC\+\_\+\+VALID}} = 1
, \mbox{\hyperlink{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920da4b2d522b407118280d4e3145d2d7771d}{RTR\+\_\+\+BGPSEC\+\_\+\+SUCCESS}} = 0
, \mbox{\hyperlink{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920da9da7ad6b6a05205d1df1221c44ede237}{RTR\+\_\+\+BGPSEC\+\_\+\+ERROR}} = -\/1
, \newline
\mbox{\hyperlink{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920dacc4a12cda298e7f76be8bfd90560a463}{RTR\+\_\+\+BGPSEC\+\_\+\+LOAD\+\_\+\+PUB\+\_\+\+KEY\+\_\+\+ERROR}} = -\/2
, \mbox{\hyperlink{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920daba10f86e6916f030c8623fecd6ac4a80}{RTR\+\_\+\+BGPSEC\+\_\+\+LOAD\+\_\+\+PRIV\+\_\+\+KEY\+\_\+\+ERROR}} = -\/3
, \mbox{\hyperlink{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920da5d838e1e0070f6a0483056d84e5c793e}{RTR\+\_\+\+BGPSEC\+\_\+\+ROUTER\+\_\+\+KEY\+\_\+\+NOT\+\_\+\+FOUND}} = -\/4
, \mbox{\hyperlink{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920dac2bde30da1e8aedefa74eaeee64f47bf}{RTR\+\_\+\+BGPSEC\+\_\+\+SIGNING\+\_\+\+ERROR}} = -\/5
, \newline
\mbox{\hyperlink{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920dab96170b4b62053fb2c250dc3c5d50ab8}{RTR\+\_\+\+BGPSEC\+\_\+\+UNSUPPORTED\+\_\+\+ALGORITHM\+\_\+\+SUITE}} = -\/6
, \mbox{\hyperlink{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920da7841ed69cb20185924ab0190f6b3775e}{RTR\+\_\+\+BGPSEC\+\_\+\+UNSUPPORTED\+\_\+\+AFI}} = -\/7
, \mbox{\hyperlink{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920da2525e9bf30080965199c54116769e711}{RTR\+\_\+\+BGPSEC\+\_\+\+WRONG\+\_\+\+SEGMENT\+\_\+\+COUNT}} = -\/8
, \mbox{\hyperlink{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920dab0b4eec01c7a160dddc36a927479c7c1}{RTR\+\_\+\+BGPSEC\+\_\+\+INVALID\+\_\+\+ARGUMENTS}} = -\/9
 \}
\begin{DoxyCompactList}\small\item\em Status codes for various cases. \end{DoxyCompactList}\end{DoxyCompactItemize}
\doxysubsubsubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
int \mbox{\hyperlink{group__mod__bgpsec__h_gaf4f652ef6e5930e5af320b5f2fac4904}{rtr\+\_\+bgpsec\+\_\+validate\+\_\+as\+\_\+path}} (const struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}data, struct \mbox{\hyperlink{structspki__table}{spki\+\_\+table}} \texorpdfstring{$\ast$}{*}table)
\begin{DoxyCompactList}\small\item\em Validation function for AS path validation. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{group__mod__bgpsec__h_ga82d1a1fe7220367ddfc14b2f0b41a186}{rtr\+\_\+bgpsec\+\_\+generate\+\_\+signature}} (const struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}data, uint8\+\_\+t \texorpdfstring{$\ast$}{*}private\+\_\+key, struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}new\+\_\+signature)
\begin{DoxyCompactList}\small\item\em Signing function for a BGPsec\+\_\+\+PATH. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{group__mod__bgpsec__h_ga452fbfb5fe2ed8b57638a1153b3a316c}{rtr\+\_\+bgpsec\+\_\+get\+\_\+version}} (void)
\begin{DoxyCompactList}\small\item\em Returns the highest supported BGPsec version. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{group__mod__bgpsec__h_ga1f05eb1ca57d57ae97d018863dc3d126}{rtr\+\_\+bgpsec\+\_\+has\+\_\+algorithm\+\_\+suite}} (uint8\+\_\+t alg\+\_\+suite)
\begin{DoxyCompactList}\small\item\em Check, if an algorithm suite is supported by RTRlib. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{group__mod__bgpsec__h_gab73b95f5128846e114e4c865ae7f81cf}{rtr\+\_\+bgpsec\+\_\+get\+\_\+algorithm\+\_\+suites}} (const uint8\+\_\+t \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}algs\+\_\+arr)
\begin{DoxyCompactList}\small\item\em Returns a pointer to a list that holds all supported algorithm suites. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__mod__bgpsec__h_ga06ccc1acd1a385735aa6b5c82027aad4}{rtr\+\_\+bgpsec\+\_\+free\+\_\+signatures}} (struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}seg)
\begin{DoxyCompactList}\small\item\em Free a signature and any signatures that are pointed to. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__mod__bgpsec__h_ga9315b7fd791d37dfdd4c8ecd1f900112}{rtr\+\_\+bgpsec\+\_\+new\+\_\+secure\+\_\+path\+\_\+seg}} (uint8\+\_\+t pcount, uint8\+\_\+t \mbox{\hyperlink{rtr__pdus_8h_aa2585d779da0ab21273a8d92de9a0ebe}{flags}}, uint32\+\_\+t \mbox{\hyperlink{rtr__pdus_8h_af54a4e57359d5c0dc5935878531a9e58}{asn}})
\begin{DoxyCompactList}\small\item\em Return an allocated and initialized Secure Path Segment. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__mod__bgpsec__h_ga2d4bd0a47d34c79c34c1aa011d9f474f}{rtr\+\_\+bgpsec\+\_\+prepend\+\_\+sec\+\_\+path\+\_\+seg}} (struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}bgpsec, struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}} \texorpdfstring{$\ast$}{*}new\+\_\+seg)
\begin{DoxyCompactList}\small\item\em Prepend a given Secure Path Segment to \doxylink{group__mod__bgpsec__h_ga70c566ac333d38b555585a204f6fdb86}{rtr\+\_\+bgpsec\+::path}. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__mod__bgpsec__h_ga3c7a099f5bea442916ac5e8077611388}{rtr\+\_\+bgpsec\+\_\+new\+\_\+signature\+\_\+seg}} (uint8\+\_\+t \texorpdfstring{$\ast$}{*}\mbox{\hyperlink{rtr__pdus_8h_a12038882b8c1e8109c0e4b1ea6f8cb5c}{ski}}, uint16\+\_\+t sig\+\_\+len, uint8\+\_\+t \texorpdfstring{$\ast$}{*}signature)
\begin{DoxyCompactList}\small\item\em Return an allocated and initialized Signature. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{group__mod__bgpsec__h_ga785406619b2c36285bcaba7e5bc70153}{rtr\+\_\+bgpsec\+\_\+prepend\+\_\+sig\+\_\+seg}} (struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}bgpsec, struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}new\+\_\+seg)
\begin{DoxyCompactList}\small\item\em Prepend a given Signature Segment to \doxylink{group__mod__bgpsec__h_ga9ac4281b75fa0e3b0f33d5eb7ca26d56}{rtr\+\_\+bgpsec\+::sigs}. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__mod__bgpsec__h_ga784213173402e6a0e7e445378e1c7914}{rtr\+\_\+bgpsec\+\_\+new}} (uint8\+\_\+t alg, uint8\+\_\+t safi, uint16\+\_\+t afi, uint32\+\_\+t my\+\_\+as, uint32\+\_\+t target\+\_\+as, struct \mbox{\hyperlink{structrtr__bgpsec__nlri}{rtr\+\_\+bgpsec\+\_\+nlri}} \texorpdfstring{$\ast$}{*}nlri)
\begin{DoxyCompactList}\small\item\em Initializes and returns a pointer to a \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structrtr__bgpsec__nlri}{rtr\+\_\+bgpsec\+\_\+nlri}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__mod__bgpsec__h_gab9e9157e6a9346340532f9bd61d572f3}{rtr\+\_\+bgpsec\+\_\+nlri\+\_\+new}} (int nlri\+\_\+len)
\begin{DoxyCompactList}\small\item\em Allocate memory for a \doxylink{structrtr__bgpsec__nlri}{rtr\+\_\+bgpsec\+\_\+nlri} struct. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__mod__bgpsec__h_ga7341c1f304638573b90f9577d6c7b2e7}{rtr\+\_\+bgpsec\+\_\+nlri\+\_\+free}} (struct \mbox{\hyperlink{structrtr__bgpsec__nlri}{rtr\+\_\+bgpsec\+\_\+nlri}} \texorpdfstring{$\ast$}{*}nlri)
\begin{DoxyCompactList}\small\item\em Free a \doxylink{structrtr__bgpsec__nlri}{rtr\+\_\+bgpsec\+\_\+nlri} struct. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__mod__bgpsec__h_ga83280be031a6dc6662ae4d1b6c29150f}{rtr\+\_\+bgpsec\+\_\+free}} (struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}bgpsec)
\begin{DoxyCompactList}\small\item\em Free a \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct and any Secure Path and Signature Segments it holds. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__mod__bgpsec__h_gac2aa2ab380a95a3ce510f410055f9077}{rtr\+\_\+bgpsec\+\_\+free\+\_\+secure\+\_\+path}} (struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}} \texorpdfstring{$\ast$}{*}seg)
\begin{DoxyCompactList}\small\item\em Free a Secure Path Segment and any segments that are pointed to by \doxylink{group__mod__bgpsec__h_gaacb2a93cf30e6cbef1124f8479978bee}{rtr\+\_\+secure\+\_\+path\+\_\+seg\+::next}. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__mod__bgpsec__h_ga6faeb7d092e87b550f1abe39450e6fcc}{rtr\+\_\+bgpsec\+\_\+pop\+\_\+signature\+\_\+seg}} (struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}bgpsec)
\begin{DoxyCompactList}\small\item\em Pop off the first Signature Segment from a given \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct and return this Signature Segment. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__mod__bgpsec__h_gaf4f16784026638c9edd45f1a02d2c230}{rtr\+\_\+bgpsec\+\_\+pop\+\_\+secure\+\_\+path\+\_\+seg}} (struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}bgpsec)
\begin{DoxyCompactList}\small\item\em Pop off the first Secure Path Segment from a given \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct and return this Secure Path Segment. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{group__mod__bgpsec__h_ga90937970469024def59c46ba1e356bc4}{rtr\+\_\+bgpsec\+\_\+append\+\_\+sig\+\_\+seg}} (struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}bgpsec, struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}new\+\_\+seg)
\begin{DoxyCompactList}\small\item\em Append a Signature Segment to the end of the \doxylink{group__mod__bgpsec__h_ga9ac4281b75fa0e3b0f33d5eb7ca26d56}{rtr\+\_\+bgpsec\+::sigs} of a given \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__mod__bgpsec__h_ga24ecff08ba0976138ab9be55a74c8445}{rtr\+\_\+bgpsec\+\_\+append\+\_\+sec\+\_\+path\+\_\+seg}} (struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}bgpsec, struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}} \texorpdfstring{$\ast$}{*}new\+\_\+seg)
\begin{DoxyCompactList}\small\item\em Append a Secure Path Segment to the end of the \doxylink{group__mod__bgpsec__h_ga70c566ac333d38b555585a204f6fdb86}{rtr\+\_\+bgpsec\+::path} of a given \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__mod__bgpsec__h_gafee29d5b9fa5efc3828dbd5ff354b41f}{rtr\+\_\+bgpsec\+\_\+add\+\_\+spki\+\_\+record}} (struct \mbox{\hyperlink{structspki__table}{spki\+\_\+table}} \texorpdfstring{$\ast$}{*}table, struct \mbox{\hyperlink{structspki__record}{spki\+\_\+record}} \texorpdfstring{$\ast$}{*}record)
\begin{DoxyCompactList}\small\item\em Manually add a SPKI record into the SPKI table. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{group__mod__bgpsec__h_gaf9badeb7acc29cff0418eee9e588de43}{rtr\+\_\+mgr\+\_\+bgpsec\+\_\+validate\+\_\+as\+\_\+path}} (const struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}data, struct \mbox{\hyperlink{structrtr__mgr__config}{rtr\+\_\+mgr\+\_\+config}} \texorpdfstring{$\ast$}{*}config)
\begin{DoxyCompactList}\small\item\em Validation function for AS path validation. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{group__mod__bgpsec__h_ga02191e23df60ef7065f10bf73025f34b}{rtr\+\_\+mgr\+\_\+bgpsec\+\_\+generate\+\_\+signature}} (const struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}data, uint8\+\_\+t \texorpdfstring{$\ast$}{*}private\+\_\+key, struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}new\+\_\+signature)
\begin{DoxyCompactList}\small\item\em Signing function for a BGPsec\+\_\+\+PATH. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{group__mod__bgpsec__h_gaa25054a937c4d711b4a7536881a2e4ea}{rtr\+\_\+mgr\+\_\+bgpsec\+\_\+get\+\_\+version}} (void)
\begin{DoxyCompactList}\small\item\em Returns the highest supported BGPsec version. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{group__mod__bgpsec__h_ga44d36f1ae84b494d71b8bc3cb9344b2c}{rtr\+\_\+mgr\+\_\+bgpsec\+\_\+has\+\_\+algorithm\+\_\+suite}} (uint8\+\_\+t alg\+\_\+suite)
\begin{DoxyCompactList}\small\item\em Check, if an algorithm suite is supported by RTRlib. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{group__mod__bgpsec__h_ga9e207041eaa0b33661a729ef03435b22}{rtr\+\_\+mgr\+\_\+bgpsec\+\_\+get\+\_\+algorithm\+\_\+suites}} (const uint8\+\_\+t \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}algs\+\_\+arr)
\begin{DoxyCompactList}\small\item\em Returns pointer to a list that holds all supported algorithm suites. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__mod__bgpsec__h_gaf9d3006e8030ed9a277908affd93ffe6}{rtr\+\_\+mgr\+\_\+bgpsec\+\_\+free\+\_\+signatures}} (struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}seg)
\begin{DoxyCompactList}\small\item\em Free a signature and any signatures that are pointed to. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__mod__bgpsec__h_gae8901042f22059377d0b65401d0fb3ce}{rtr\+\_\+mgr\+\_\+bgpsec\+\_\+new\+\_\+secure\+\_\+path\+\_\+seg}} (uint8\+\_\+t pcount, uint8\+\_\+t \mbox{\hyperlink{rtr__pdus_8h_aa2585d779da0ab21273a8d92de9a0ebe}{flags}}, uint32\+\_\+t \mbox{\hyperlink{rtr__pdus_8h_af54a4e57359d5c0dc5935878531a9e58}{asn}})
\begin{DoxyCompactList}\small\item\em Return an allocated and initialized Secure Path Segment. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__mod__bgpsec__h_gad8d0724e1322c2f030bba2780643cca1}{rtr\+\_\+mgr\+\_\+bgpsec\+\_\+prepend\+\_\+sec\+\_\+path\+\_\+seg}} (struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}bgpsec, struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}} \texorpdfstring{$\ast$}{*}new\+\_\+seg)
\begin{DoxyCompactList}\small\item\em Prepend a given Secure Path Segment to \doxylink{group__mod__bgpsec__h_ga70c566ac333d38b555585a204f6fdb86}{rtr\+\_\+bgpsec\+::path}. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__mod__bgpsec__h_gae4718b94b70313a593eb99d1a9f1985e}{rtr\+\_\+mgr\+\_\+bgpsec\+\_\+new\+\_\+signature\+\_\+seg}} (uint8\+\_\+t \texorpdfstring{$\ast$}{*}\mbox{\hyperlink{rtr__pdus_8h_a12038882b8c1e8109c0e4b1ea6f8cb5c}{ski}}, uint16\+\_\+t sig\+\_\+len, uint8\+\_\+t \texorpdfstring{$\ast$}{*}signature)
\begin{DoxyCompactList}\small\item\em Return an allocated and initialized Signature. \end{DoxyCompactList}\item 
int \mbox{\hyperlink{group__mod__bgpsec__h_ga3ed9f03a167dcafec5c817aadb3a2cc1}{rtr\+\_\+mgr\+\_\+bgpsec\+\_\+prepend\+\_\+sig\+\_\+seg}} (struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}bgpsec, struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}new\+\_\+seg)
\begin{DoxyCompactList}\small\item\em Prepend a given Signature Segment to \doxylink{group__mod__bgpsec__h_ga9ac4281b75fa0e3b0f33d5eb7ca26d56}{rtr\+\_\+bgpsec\+::sigs}. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__mod__bgpsec__h_ga1647a76f6faa7bdff40fdceaa36cf344}{rtr\+\_\+mgr\+\_\+bgpsec\+\_\+new}} (uint8\+\_\+t alg, uint8\+\_\+t safi, uint16\+\_\+t afi, uint32\+\_\+t my\+\_\+as, uint32\+\_\+t target\+\_\+as, struct \mbox{\hyperlink{structrtr__bgpsec__nlri}{rtr\+\_\+bgpsec\+\_\+nlri}} \texorpdfstring{$\ast$}{*}nlri)
\begin{DoxyCompactList}\small\item\em Initializes and returns a pointer to a \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__mod__bgpsec__h_ga9ceb6a57f16491ea2bf620ea289d5e43}{rtr\+\_\+mgr\+\_\+bgpsec\+\_\+free}} (struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}bgpsec)
\begin{DoxyCompactList}\small\item\em Free a \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct and any Secure Path and Signature Segments it holds. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__mod__bgpsec__h_gabb9fa496596ad8b5e48eae935fe91e67}{rtr\+\_\+mgr\+\_\+free\+\_\+secure\+\_\+path}} (struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}} \texorpdfstring{$\ast$}{*}seg)
\begin{DoxyCompactList}\small\item\em Free a Secure Path Segment and any segments that are pointed to by \doxylink{group__mod__bgpsec__h_gaacb2a93cf30e6cbef1124f8479978bee}{rtr\+\_\+secure\+\_\+path\+\_\+seg\+::next}. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__mod__bgpsec__h_gacd999a5a72669ace81415ef8d14e855d}{rtr\+\_\+mgr\+\_\+bgpsec\+\_\+pop\+\_\+secure\+\_\+path\+\_\+seg}} (struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}bgpsec)
\begin{DoxyCompactList}\small\item\em Retrieve a pointer to the last appended Secure Path Segment from a bgpsec struct. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__mod__bgpsec__h_gac740f9108edae0a37ff307f278f6d461}{rtr\+\_\+mgr\+\_\+bgpsec\+\_\+pop\+\_\+signature\+\_\+seg}} (struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}bgpsec)
\begin{DoxyCompactList}\small\item\em Retrieve a pointer to the last appended Signature Segment from a bgpsec struct. \end{DoxyCompactList}\item 
void \mbox{\hyperlink{group__mod__bgpsec__h_gae064e87f7417c7a2d59a24914c968668}{rtr\+\_\+mgr\+\_\+bgpsec\+\_\+append\+\_\+sec\+\_\+path\+\_\+seg}} (struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}bgpsec, struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}} \texorpdfstring{$\ast$}{*}new\+\_\+seg)
\item 
int \mbox{\hyperlink{group__mod__bgpsec__h_ga8f0c212f739708bb38773641bb8352d7}{rtr\+\_\+mgr\+\_\+bgpsec\+\_\+append\+\_\+sig\+\_\+seg}} (struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}bgpsec, struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}new\+\_\+seg)
\item 
struct \mbox{\hyperlink{structrtr__bgpsec__nlri}{rtr\+\_\+bgpsec\+\_\+nlri}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__mod__bgpsec__h_ga7d836e01783b448ed120e986867884d3}{rtr\+\_\+mgr\+\_\+bgpsec\+\_\+nlri\+\_\+new}} (int nlri\+\_\+len)
\item 
void \mbox{\hyperlink{group__mod__bgpsec__h_ga4341f88be93d24123063e32b5ec0e198}{rtr\+\_\+mgr\+\_\+bgpsec\+\_\+nlri\+\_\+free}} (struct \mbox{\hyperlink{structrtr__bgpsec__nlri}{rtr\+\_\+bgpsec\+\_\+nlri}} \texorpdfstring{$\ast$}{*}nlri)
\item 
void \mbox{\hyperlink{group__mod__bgpsec__h_gad5bdb4e9a6956d387bb7d1598e129242}{rtr\+\_\+mgr\+\_\+bgpsec\+\_\+add\+\_\+spki\+\_\+record}} (struct \mbox{\hyperlink{structrtr__mgr__config}{rtr\+\_\+mgr\+\_\+config}} \texorpdfstring{$\ast$}{*}config, struct \mbox{\hyperlink{structspki__record}{spki\+\_\+record}} \texorpdfstring{$\ast$}{*}record)
\end{DoxyCompactItemize}
\doxysubsubsubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__mod__bgpsec__h_gaacb2a93cf30e6cbef1124f8479978bee}{rtr\+\_\+secure\+\_\+path\+\_\+seg\+::next}}
\begin{DoxyCompactList}\small\item\em Reference to the next Secure Path Segment (do not edit manually). \end{DoxyCompactList}\item 
uint8\+\_\+t \mbox{\hyperlink{group__mod__bgpsec__h_gae382b67d56735b6edfa721ba591f1175}{rtr\+\_\+secure\+\_\+path\+\_\+seg\+::pcount}}
\item 
uint8\+\_\+t \mbox{\hyperlink{group__mod__bgpsec__h_ga047031904be7f4da731d07b2e7bb26e7}{rtr\+\_\+secure\+\_\+path\+\_\+seg\+::flags}}
\item 
uint32\+\_\+t \mbox{\hyperlink{group__mod__bgpsec__h_ga2f429bf09b57b43aa63ad9b6a3ecdb69}{rtr\+\_\+secure\+\_\+path\+\_\+seg\+::asn}}
\item 
struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__mod__bgpsec__h_gaa59d57a58627423fc3121b4aebed3814}{rtr\+\_\+signature\+\_\+seg\+::next}}
\item 
uint8\+\_\+t \mbox{\hyperlink{group__mod__bgpsec__h_ga8e248012e7dbae61f22c3cd5c1c1b12a}{rtr\+\_\+signature\+\_\+seg\+::ski}} \mbox{[}20\mbox{]}
\item 
uint16\+\_\+t \mbox{\hyperlink{group__mod__bgpsec__h_gae416f3a1f81da3b5f3df9b1d186bd1a9}{rtr\+\_\+signature\+\_\+seg\+::sig\+\_\+len}}
\item 
uint8\+\_\+t \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__mod__bgpsec__h_gaed4b28efa853473e1c780a35292b2285}{rtr\+\_\+signature\+\_\+seg\+::signature}}
\begin{DoxyCompactList}\small\item\em The signature of the segment. \end{DoxyCompactList}\item 
uint16\+\_\+t \mbox{\hyperlink{group__mod__bgpsec__h_ga8fdf7a52fdd3292161b9b0a211377417}{rtr\+\_\+bgpsec\+\_\+nlri\+::afi}}
\item 
uint8\+\_\+t \mbox{\hyperlink{group__mod__bgpsec__h_ga814cbd22dd2c801137b9a9a7f0a70bb6}{rtr\+\_\+bgpsec\+\_\+nlri\+::safi}}
\item 
uint8\+\_\+t \mbox{\hyperlink{group__mod__bgpsec__h_gacb97c8e9530cb198806774905ca03e54}{rtr\+\_\+bgpsec\+\_\+nlri\+::nlri\+\_\+len}}
\item 
uint8\+\_\+t \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__mod__bgpsec__h_gaeb1c62458cc35831b9ce13c00b7dd011}{rtr\+\_\+bgpsec\+\_\+nlri\+::nlri}}
\item 
uint8\+\_\+t \mbox{\hyperlink{group__mod__bgpsec__h_gad95c036d25ce114cca924480585b0e97}{rtr\+\_\+bgpsec\+::alg}}
\item 
uint8\+\_\+t \mbox{\hyperlink{group__mod__bgpsec__h_ga6a5f2e8fce661744a358244a54aad944}{rtr\+\_\+bgpsec\+::safi}}
\item 
uint16\+\_\+t \mbox{\hyperlink{group__mod__bgpsec__h_gab7dc6b6ed0af13dd11ff846d0fcb42b9}{rtr\+\_\+bgpsec\+::afi}}
\item 
uint32\+\_\+t \mbox{\hyperlink{group__mod__bgpsec__h_ga4dd9f495b6b7d774b275d6e599918b24}{rtr\+\_\+bgpsec\+::my\+\_\+as}}
\item 
uint32\+\_\+t \mbox{\hyperlink{group__mod__bgpsec__h_gac8c9ef46ad63dfb79de8a4d45bf04e51}{rtr\+\_\+bgpsec\+::target\+\_\+as}}
\item 
uint16\+\_\+t \mbox{\hyperlink{group__mod__bgpsec__h_gac0558d937e2a8b152bf910538ebb5cd5}{rtr\+\_\+bgpsec\+::sigs\+\_\+len}}
\begin{DoxyCompactList}\small\item\em Count of Signature Segments (do not edit manually). \end{DoxyCompactList}\item 
uint8\+\_\+t \mbox{\hyperlink{group__mod__bgpsec__h_gaedca6831731b38f3a900b5d261991afe}{rtr\+\_\+bgpsec\+::path\+\_\+len}}
\begin{DoxyCompactList}\small\item\em Count of Secure Path Segments (do not edit manually). \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structrtr__bgpsec__nlri}{rtr\+\_\+bgpsec\+\_\+nlri}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__mod__bgpsec__h_ga1d80cf9fda81ed3c92cd6df3331c083e}{rtr\+\_\+bgpsec\+::nlri}}
\item 
struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__mod__bgpsec__h_ga9ac4281b75fa0e3b0f33d5eb7ca26d56}{rtr\+\_\+bgpsec\+::sigs}}
\begin{DoxyCompactList}\small\item\em Reference to the Signature Segments. \end{DoxyCompactList}\item 
struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}} \texorpdfstring{$\ast$}{*} \mbox{\hyperlink{group__mod__bgpsec__h_ga70c566ac333d38b555585a204f6fdb86}{rtr\+\_\+bgpsec\+::path}}
\begin{DoxyCompactList}\small\item\em Reference to the Secure Path Segments. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsubsection{Detailed Description}
BGPsec allows for validation of the BGPsec\+\_\+\+PATH attribute of a BGPsec update. 



\doxysubsubsection{Macro Definition Documentation}
\Hypertarget{group__mod__bgpsec__h_ga10c896b36edae4ffef5f4680c85ff54e}\label{group__mod__bgpsec__h_ga10c896b36edae4ffef5f4680c85ff54e} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!BGPSEC\_IPV4@{BGPSEC\_IPV4}}
\index{BGPSEC\_IPV4@{BGPSEC\_IPV4}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{BGPSEC\_IPV4}{BGPSEC\_IPV4}}
{\footnotesize\ttfamily \#define BGPSEC\+\_\+\+IPV4~1}



{\ttfamily \#include $<$\mbox{\hyperlink{bgpsec_8h}{rtrlib/bgpsec/bgpsec.\+h}}$>$}

\Hypertarget{group__mod__bgpsec__h_ga8c1b5ec5499e8907aea105d45d2bab99}\label{group__mod__bgpsec__h_ga8c1b5ec5499e8907aea105d45d2bab99} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!BGPSEC\_IPV6@{BGPSEC\_IPV6}}
\index{BGPSEC\_IPV6@{BGPSEC\_IPV6}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{BGPSEC\_IPV6}{BGPSEC\_IPV6}}
{\footnotesize\ttfamily \#define BGPSEC\+\_\+\+IPV6~2}



{\ttfamily \#include $<$\mbox{\hyperlink{bgpsec_8h}{rtrlib/bgpsec/bgpsec.\+h}}$>$}



\doxysubsubsection{Enumeration Type Documentation}
\Hypertarget{group__mod__bgpsec__h_ga02fc9657b1a370e44d40cf158a895fee}\label{group__mod__bgpsec__h_ga02fc9657b1a370e44d40cf158a895fee} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_bgpsec\_algorithm\_suites@{rtr\_bgpsec\_algorithm\_suites}}
\index{rtr\_bgpsec\_algorithm\_suites@{rtr\_bgpsec\_algorithm\_suites}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_bgpsec\_algorithm\_suites}{rtr\_bgpsec\_algorithm\_suites}}
{\footnotesize\ttfamily enum \mbox{\hyperlink{group__mod__bgpsec__h_ga02fc9657b1a370e44d40cf158a895fee}{rtr\+\_\+bgpsec\+\_\+algorithm\+\_\+suites}}}



{\ttfamily \#include $<$\mbox{\hyperlink{bgpsec_8h}{rtrlib/bgpsec/bgpsec.\+h}}$>$}



All supported algorithm suites. 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{RTR\_BGPSEC\_ALGORITHM\_SUITE\_1@{RTR\_BGPSEC\_ALGORITHM\_SUITE\_1}!BGPsec AS path validation@{BGPsec AS path validation}}\index{BGPsec AS path validation@{BGPsec AS path validation}!RTR\_BGPSEC\_ALGORITHM\_SUITE\_1@{RTR\_BGPSEC\_ALGORITHM\_SUITE\_1}}}\Hypertarget{group__mod__bgpsec__h_gga02fc9657b1a370e44d40cf158a895feea810d0ce8d5538e90ae797516fce0403a}\label{group__mod__bgpsec__h_gga02fc9657b1a370e44d40cf158a895feea810d0ce8d5538e90ae797516fce0403a} 
RTR\+\_\+\+BGPSEC\+\_\+\+ALGORITHM\+\_\+\+SUITE\+\_\+1&Algorithm suite 1. \\
\hline

\end{DoxyEnumFields}
\Hypertarget{group__mod__bgpsec__h_ga68db4b8982e72512221963390473920d}\label{group__mod__bgpsec__h_ga68db4b8982e72512221963390473920d} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_bgpsec\_rtvals@{rtr\_bgpsec\_rtvals}}
\index{rtr\_bgpsec\_rtvals@{rtr\_bgpsec\_rtvals}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_bgpsec\_rtvals}{rtr\_bgpsec\_rtvals}}
{\footnotesize\ttfamily enum \mbox{\hyperlink{group__mod__bgpsec__h_ga68db4b8982e72512221963390473920d}{rtr\+\_\+bgpsec\+\_\+rtvals}}}



{\ttfamily \#include $<$\mbox{\hyperlink{bgpsec_8h}{rtrlib/bgpsec/bgpsec.\+h}}$>$}



Status codes for various cases. 

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{RTR\_BGPSEC\_NOT\_VALID@{RTR\_BGPSEC\_NOT\_VALID}!BGPsec AS path validation@{BGPsec AS path validation}}\index{BGPsec AS path validation@{BGPsec AS path validation}!RTR\_BGPSEC\_NOT\_VALID@{RTR\_BGPSEC\_NOT\_VALID}}}\Hypertarget{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920dac4afb6c9d62f7348067da39406a30936}\label{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920dac4afb6c9d62f7348067da39406a30936} 
RTR\+\_\+\+BGPSEC\+\_\+\+NOT\+\_\+\+VALID&At least one signature is not valid. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{RTR\_BGPSEC\_VALID@{RTR\_BGPSEC\_VALID}!BGPsec AS path validation@{BGPsec AS path validation}}\index{BGPsec AS path validation@{BGPsec AS path validation}!RTR\_BGPSEC\_VALID@{RTR\_BGPSEC\_VALID}}}\Hypertarget{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920da5bc92f4a86ecb254e085ee565c630425}\label{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920da5bc92f4a86ecb254e085ee565c630425} 
RTR\+\_\+\+BGPSEC\+\_\+\+VALID&All signatures are valid. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{RTR\_BGPSEC\_SUCCESS@{RTR\_BGPSEC\_SUCCESS}!BGPsec AS path validation@{BGPsec AS path validation}}\index{BGPsec AS path validation@{BGPsec AS path validation}!RTR\_BGPSEC\_SUCCESS@{RTR\_BGPSEC\_SUCCESS}}}\Hypertarget{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920da4b2d522b407118280d4e3145d2d7771d}\label{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920da4b2d522b407118280d4e3145d2d7771d} 
RTR\+\_\+\+BGPSEC\+\_\+\+SUCCESS&An operation was successful. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{RTR\_BGPSEC\_ERROR@{RTR\_BGPSEC\_ERROR}!BGPsec AS path validation@{BGPsec AS path validation}}\index{BGPsec AS path validation@{BGPsec AS path validation}!RTR\_BGPSEC\_ERROR@{RTR\_BGPSEC\_ERROR}}}\Hypertarget{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920da9da7ad6b6a05205d1df1221c44ede237}\label{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920da9da7ad6b6a05205d1df1221c44ede237} 
RTR\+\_\+\+BGPSEC\+\_\+\+ERROR&An operation was not successful. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{RTR\_BGPSEC\_LOAD\_PUB\_KEY\_ERROR@{RTR\_BGPSEC\_LOAD\_PUB\_KEY\_ERROR}!BGPsec AS path validation@{BGPsec AS path validation}}\index{BGPsec AS path validation@{BGPsec AS path validation}!RTR\_BGPSEC\_LOAD\_PUB\_KEY\_ERROR@{RTR\_BGPSEC\_LOAD\_PUB\_KEY\_ERROR}}}\Hypertarget{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920dacc4a12cda298e7f76be8bfd90560a463}\label{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920dacc4a12cda298e7f76be8bfd90560a463} 
RTR\+\_\+\+BGPSEC\+\_\+\+LOAD\+\_\+\+PUB\+\_\+\+KEY\+\_\+\+ERROR&The public key could not be loaded. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{RTR\_BGPSEC\_LOAD\_PRIV\_KEY\_ERROR@{RTR\_BGPSEC\_LOAD\_PRIV\_KEY\_ERROR}!BGPsec AS path validation@{BGPsec AS path validation}}\index{BGPsec AS path validation@{BGPsec AS path validation}!RTR\_BGPSEC\_LOAD\_PRIV\_KEY\_ERROR@{RTR\_BGPSEC\_LOAD\_PRIV\_KEY\_ERROR}}}\Hypertarget{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920daba10f86e6916f030c8623fecd6ac4a80}\label{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920daba10f86e6916f030c8623fecd6ac4a80} 
RTR\+\_\+\+BGPSEC\+\_\+\+LOAD\+\_\+\+PRIV\+\_\+\+KEY\+\_\+\+ERROR&The private key could not be loaded. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{RTR\_BGPSEC\_ROUTER\_KEY\_NOT\_FOUND@{RTR\_BGPSEC\_ROUTER\_KEY\_NOT\_FOUND}!BGPsec AS path validation@{BGPsec AS path validation}}\index{BGPsec AS path validation@{BGPsec AS path validation}!RTR\_BGPSEC\_ROUTER\_KEY\_NOT\_FOUND@{RTR\_BGPSEC\_ROUTER\_KEY\_NOT\_FOUND}}}\Hypertarget{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920da5d838e1e0070f6a0483056d84e5c793e}\label{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920da5d838e1e0070f6a0483056d84e5c793e} 
RTR\+\_\+\+BGPSEC\+\_\+\+ROUTER\+\_\+\+KEY\+\_\+\+NOT\+\_\+\+FOUND&The SKI for a router key was not found. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{RTR\_BGPSEC\_SIGNING\_ERROR@{RTR\_BGPSEC\_SIGNING\_ERROR}!BGPsec AS path validation@{BGPsec AS path validation}}\index{BGPsec AS path validation@{BGPsec AS path validation}!RTR\_BGPSEC\_SIGNING\_ERROR@{RTR\_BGPSEC\_SIGNING\_ERROR}}}\Hypertarget{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920dac2bde30da1e8aedefa74eaeee64f47bf}\label{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920dac2bde30da1e8aedefa74eaeee64f47bf} 
RTR\+\_\+\+BGPSEC\+\_\+\+SIGNING\+\_\+\+ERROR&An error during signing occurred. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{RTR\_BGPSEC\_UNSUPPORTED\_ALGORITHM\_SUITE@{RTR\_BGPSEC\_UNSUPPORTED\_ALGORITHM\_SUITE}!BGPsec AS path validation@{BGPsec AS path validation}}\index{BGPsec AS path validation@{BGPsec AS path validation}!RTR\_BGPSEC\_UNSUPPORTED\_ALGORITHM\_SUITE@{RTR\_BGPSEC\_UNSUPPORTED\_ALGORITHM\_SUITE}}}\Hypertarget{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920dab96170b4b62053fb2c250dc3c5d50ab8}\label{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920dab96170b4b62053fb2c250dc3c5d50ab8} 
RTR\+\_\+\+BGPSEC\+\_\+\+UNSUPPORTED\+\_\+\+ALGORITHM\+\_\+\+SUITE&The specified algorithm suite is not supported by RTRlib. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{RTR\_BGPSEC\_UNSUPPORTED\_AFI@{RTR\_BGPSEC\_UNSUPPORTED\_AFI}!BGPsec AS path validation@{BGPsec AS path validation}}\index{BGPsec AS path validation@{BGPsec AS path validation}!RTR\_BGPSEC\_UNSUPPORTED\_AFI@{RTR\_BGPSEC\_UNSUPPORTED\_AFI}}}\Hypertarget{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920da7841ed69cb20185924ab0190f6b3775e}\label{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920da7841ed69cb20185924ab0190f6b3775e} 
RTR\+\_\+\+BGPSEC\+\_\+\+UNSUPPORTED\+\_\+\+AFI&The specified AFI is not supported by BGPsec. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{RTR\_BGPSEC\_WRONG\_SEGMENT\_COUNT@{RTR\_BGPSEC\_WRONG\_SEGMENT\_COUNT}!BGPsec AS path validation@{BGPsec AS path validation}}\index{BGPsec AS path validation@{BGPsec AS path validation}!RTR\_BGPSEC\_WRONG\_SEGMENT\_COUNT@{RTR\_BGPSEC\_WRONG\_SEGMENT\_COUNT}}}\Hypertarget{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920da2525e9bf30080965199c54116769e711}\label{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920da2525e9bf30080965199c54116769e711} 
RTR\+\_\+\+BGPSEC\+\_\+\+WRONG\+\_\+\+SEGMENT\+\_\+\+COUNT&The count of signature and secure path segments are not equal. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{RTR\_BGPSEC\_INVALID\_ARGUMENTS@{RTR\_BGPSEC\_INVALID\_ARGUMENTS}!BGPsec AS path validation@{BGPsec AS path validation}}\index{BGPsec AS path validation@{BGPsec AS path validation}!RTR\_BGPSEC\_INVALID\_ARGUMENTS@{RTR\_BGPSEC\_INVALID\_ARGUMENTS}}}\Hypertarget{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920dab0b4eec01c7a160dddc36a927479c7c1}\label{group__mod__bgpsec__h_gga68db4b8982e72512221963390473920dab0b4eec01c7a160dddc36a927479c7c1} 
RTR\+\_\+\+BGPSEC\+\_\+\+INVALID\+\_\+\+ARGUMENTS&There is data missing for validation or signing. \\
\hline

\end{DoxyEnumFields}


\doxysubsubsection{Function Documentation}
\Hypertarget{group__mod__bgpsec__h_gafee29d5b9fa5efc3828dbd5ff354b41f}\label{group__mod__bgpsec__h_gafee29d5b9fa5efc3828dbd5ff354b41f} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_bgpsec\_add\_spki\_record@{rtr\_bgpsec\_add\_spki\_record}}
\index{rtr\_bgpsec\_add\_spki\_record@{rtr\_bgpsec\_add\_spki\_record}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_bgpsec\_add\_spki\_record()}{rtr\_bgpsec\_add\_spki\_record()}}
{\footnotesize\ttfamily void rtr\+\_\+bgpsec\+\_\+add\+\_\+spki\+\_\+record (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structspki__table}{spki\+\_\+table}} \texorpdfstring{$\ast$}{*}}]{table,  }\item[{struct \mbox{\hyperlink{structspki__record}{spki\+\_\+record}} \texorpdfstring{$\ast$}{*}}]{record }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{bgpsec__private_8h}{rtrlib/bgpsec/bgpsec\+\_\+private.\+h}}$>$}



Manually add a SPKI record into the SPKI table. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em table} & The SPKI table holding the SPKI data. \\
\hline
\mbox{\texttt{ in}}  & {\em record} & The new record that will be added to the SPKI table. \\
\hline
\end{DoxyParams}
\Hypertarget{group__mod__bgpsec__h_ga24ecff08ba0976138ab9be55a74c8445}\label{group__mod__bgpsec__h_ga24ecff08ba0976138ab9be55a74c8445} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_bgpsec\_append\_sec\_path\_seg@{rtr\_bgpsec\_append\_sec\_path\_seg}}
\index{rtr\_bgpsec\_append\_sec\_path\_seg@{rtr\_bgpsec\_append\_sec\_path\_seg}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_bgpsec\_append\_sec\_path\_seg()}{rtr\_bgpsec\_append\_sec\_path\_seg()}}
{\footnotesize\ttfamily void rtr\+\_\+bgpsec\+\_\+append\+\_\+sec\+\_\+path\+\_\+seg (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}}]{bgpsec,  }\item[{struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}} \texorpdfstring{$\ast$}{*}}]{new\+\_\+seg }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{bgpsec__private_8h}{rtrlib/bgpsec/bgpsec\+\_\+private.\+h}}$>$}



Append a Secure Path Segment to the end of the \doxylink{group__mod__bgpsec__h_ga70c566ac333d38b555585a204f6fdb86}{rtr\+\_\+bgpsec\+::path} of a given \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em bgpsec} & The \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct with the \doxylink{group__mod__bgpsec__h_ga70c566ac333d38b555585a204f6fdb86}{rtr\+\_\+bgpsec\+::path} to append the Secure Path Segment to. \\
\hline
\mbox{\texttt{ in}}  & {\em new\+\_\+seg} & The Secure Path Segments that will be appended. \\
\hline
\end{DoxyParams}
\Hypertarget{group__mod__bgpsec__h_ga90937970469024def59c46ba1e356bc4}\label{group__mod__bgpsec__h_ga90937970469024def59c46ba1e356bc4} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_bgpsec\_append\_sig\_seg@{rtr\_bgpsec\_append\_sig\_seg}}
\index{rtr\_bgpsec\_append\_sig\_seg@{rtr\_bgpsec\_append\_sig\_seg}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_bgpsec\_append\_sig\_seg()}{rtr\_bgpsec\_append\_sig\_seg()}}
{\footnotesize\ttfamily int rtr\+\_\+bgpsec\+\_\+append\+\_\+sig\+\_\+seg (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}}]{bgpsec,  }\item[{struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}}]{new\+\_\+seg }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{bgpsec__private_8h}{rtrlib/bgpsec/bgpsec\+\_\+private.\+h}}$>$}



Append a Signature Segment to the end of the \doxylink{group__mod__bgpsec__h_ga9ac4281b75fa0e3b0f33d5eb7ca26d56}{rtr\+\_\+bgpsec\+::sigs} of a given \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em bgpsec} & The \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct with the \doxylink{group__mod__bgpsec__h_ga9ac4281b75fa0e3b0f33d5eb7ca26d56}{rtr\+\_\+bgpsec\+::sigs} to append the Signature Segment to. \\
\hline
\mbox{\texttt{ in}}  & {\em new\+\_\+seg} & The Signature Segments that will be appended. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
RTR\+\_\+\+BGPSEC\+\_\+\+SUCCESS If the Signature Segment was successfully appended. 

RTR\+\_\+\+BGPSEC\+\_\+\+ERROR If an error occurred in the proccess. 
\end{DoxyReturn}
\Hypertarget{group__mod__bgpsec__h_ga83280be031a6dc6662ae4d1b6c29150f}\label{group__mod__bgpsec__h_ga83280be031a6dc6662ae4d1b6c29150f} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_bgpsec\_free@{rtr\_bgpsec\_free}}
\index{rtr\_bgpsec\_free@{rtr\_bgpsec\_free}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_bgpsec\_free()}{rtr\_bgpsec\_free()}}
{\footnotesize\ttfamily void rtr\+\_\+bgpsec\+\_\+free (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}}]{bgpsec }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{bgpsec__private_8h}{rtrlib/bgpsec/bgpsec\+\_\+private.\+h}}$>$}



Free a \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct and any Secure Path and Signature Segments it holds. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em bgpsec} & The \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct that is to be freed. \\
\hline
\end{DoxyParams}
\Hypertarget{group__mod__bgpsec__h_gac2aa2ab380a95a3ce510f410055f9077}\label{group__mod__bgpsec__h_gac2aa2ab380a95a3ce510f410055f9077} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_bgpsec\_free\_secure\_path@{rtr\_bgpsec\_free\_secure\_path}}
\index{rtr\_bgpsec\_free\_secure\_path@{rtr\_bgpsec\_free\_secure\_path}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_bgpsec\_free\_secure\_path()}{rtr\_bgpsec\_free\_secure\_path()}}
{\footnotesize\ttfamily void rtr\+\_\+bgpsec\+\_\+free\+\_\+secure\+\_\+path (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}} \texorpdfstring{$\ast$}{*}}]{seg }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{bgpsec__private_8h}{rtrlib/bgpsec/bgpsec\+\_\+private.\+h}}$>$}



Free a Secure Path Segment and any segments that are pointed to by \doxylink{group__mod__bgpsec__h_gaacb2a93cf30e6cbef1124f8479978bee}{rtr\+\_\+secure\+\_\+path\+\_\+seg\+::next}. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em seg} & The Secure Path Segment that is to be freed. \\
\hline
\end{DoxyParams}
\Hypertarget{group__mod__bgpsec__h_ga06ccc1acd1a385735aa6b5c82027aad4}\label{group__mod__bgpsec__h_ga06ccc1acd1a385735aa6b5c82027aad4} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_bgpsec\_free\_signatures@{rtr\_bgpsec\_free\_signatures}}
\index{rtr\_bgpsec\_free\_signatures@{rtr\_bgpsec\_free\_signatures}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_bgpsec\_free\_signatures()}{rtr\_bgpsec\_free\_signatures()}}
{\footnotesize\ttfamily void rtr\+\_\+bgpsec\+\_\+free\+\_\+signatures (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}}]{seg }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{bgpsec__private_8h}{rtrlib/bgpsec/bgpsec\+\_\+private.\+h}}$>$}



Free a signature and any signatures that are pointed to. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em seg} & The signature that has been passed to the signing function. \\
\hline
\end{DoxyParams}
\Hypertarget{group__mod__bgpsec__h_ga82d1a1fe7220367ddfc14b2f0b41a186}\label{group__mod__bgpsec__h_ga82d1a1fe7220367ddfc14b2f0b41a186} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_bgpsec\_generate\_signature@{rtr\_bgpsec\_generate\_signature}}
\index{rtr\_bgpsec\_generate\_signature@{rtr\_bgpsec\_generate\_signature}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_bgpsec\_generate\_signature()}{rtr\_bgpsec\_generate\_signature()}}
{\footnotesize\ttfamily int rtr\+\_\+bgpsec\+\_\+generate\+\_\+signature (\begin{DoxyParamCaption}\item[{const struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}}]{data,  }\item[{uint8\+\_\+t \texorpdfstring{$\ast$}{*}}]{private\+\_\+key,  }\item[{struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}}]{new\+\_\+signature }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{bgpsec__private_8h}{rtrlib/bgpsec/bgpsec\+\_\+private.\+h}}$>$}



Signing function for a BGPsec\+\_\+\+PATH. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em data} & Data required for AS path validation. See \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec}. \\
\hline
\mbox{\texttt{ in}}  & {\em private\+\_\+key} & The raw bytes of the private key that is used for signing. \\
\hline
\mbox{\texttt{ out}}  & {\em new\+\_\+signature} & Contains the generated signature and its length if successful. Must not be allocated. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
RTR\+\_\+\+BGPSEC\+\_\+\+SUCCESS If the signature was successfully generated. 

RTR\+\_\+\+BGPSEC\+\_\+\+ERROR If an error occurred. Refer to error codes for more details. 
\end{DoxyReturn}
\Hypertarget{group__mod__bgpsec__h_gab73b95f5128846e114e4c865ae7f81cf}\label{group__mod__bgpsec__h_gab73b95f5128846e114e4c865ae7f81cf} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_bgpsec\_get\_algorithm\_suites@{rtr\_bgpsec\_get\_algorithm\_suites}}
\index{rtr\_bgpsec\_get\_algorithm\_suites@{rtr\_bgpsec\_get\_algorithm\_suites}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_bgpsec\_get\_algorithm\_suites()}{rtr\_bgpsec\_get\_algorithm\_suites()}}
{\footnotesize\ttfamily int rtr\+\_\+bgpsec\+\_\+get\+\_\+algorithm\+\_\+suites (\begin{DoxyParamCaption}\item[{const uint8\+\_\+t \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}}]{algs\+\_\+arr }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{bgpsec__private_8h}{rtrlib/bgpsec/bgpsec\+\_\+private.\+h}}$>$}



Returns a pointer to a list that holds all supported algorithm suites. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em algs\+\_\+arr} & A char pointer that contains all supported suites. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
ALGORITHM\+\_\+\+SUITES\+\_\+\+COUNT The size of algs\+\_\+arr 
\end{DoxyReturn}
\Hypertarget{group__mod__bgpsec__h_ga452fbfb5fe2ed8b57638a1153b3a316c}\label{group__mod__bgpsec__h_ga452fbfb5fe2ed8b57638a1153b3a316c} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_bgpsec\_get\_version@{rtr\_bgpsec\_get\_version}}
\index{rtr\_bgpsec\_get\_version@{rtr\_bgpsec\_get\_version}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_bgpsec\_get\_version()}{rtr\_bgpsec\_get\_version()}}
{\footnotesize\ttfamily int rtr\+\_\+bgpsec\+\_\+get\+\_\+version (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{bgpsec__private_8h}{rtrlib/bgpsec/bgpsec\+\_\+private.\+h}}$>$}



Returns the highest supported BGPsec version. 

\begin{DoxyReturn}{Returns}
RTR\+\_\+\+BGPSEC\+\_\+\+VERSION The currently supported BGPsec version. 
\end{DoxyReturn}
\Hypertarget{group__mod__bgpsec__h_ga1f05eb1ca57d57ae97d018863dc3d126}\label{group__mod__bgpsec__h_ga1f05eb1ca57d57ae97d018863dc3d126} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_bgpsec\_has\_algorithm\_suite@{rtr\_bgpsec\_has\_algorithm\_suite}}
\index{rtr\_bgpsec\_has\_algorithm\_suite@{rtr\_bgpsec\_has\_algorithm\_suite}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_bgpsec\_has\_algorithm\_suite()}{rtr\_bgpsec\_has\_algorithm\_suite()}}
{\footnotesize\ttfamily int rtr\+\_\+bgpsec\+\_\+has\+\_\+algorithm\+\_\+suite (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{alg\+\_\+suite }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{bgpsec__private_8h}{rtrlib/bgpsec/bgpsec\+\_\+private.\+h}}$>$}



Check, if an algorithm suite is supported by RTRlib. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em alg\+\_\+suite} & The algorithm suite that is to be checked. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
RTR\+\_\+\+BGPSEC\+\_\+\+SUCCESS If the algorithm suite is supported. 

RTR\+\_\+\+BGPSEC\+\_\+\+ERROR If the algorithm suite is not supported. 
\end{DoxyReturn}
\Hypertarget{group__mod__bgpsec__h_ga784213173402e6a0e7e445378e1c7914}\label{group__mod__bgpsec__h_ga784213173402e6a0e7e445378e1c7914} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_bgpsec\_new@{rtr\_bgpsec\_new}}
\index{rtr\_bgpsec\_new@{rtr\_bgpsec\_new}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_bgpsec\_new()}{rtr\_bgpsec\_new()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*} rtr\+\_\+bgpsec\+\_\+new (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{alg,  }\item[{uint8\+\_\+t}]{safi,  }\item[{uint16\+\_\+t}]{afi,  }\item[{uint32\+\_\+t}]{my\+\_\+as,  }\item[{uint32\+\_\+t}]{target\+\_\+as,  }\item[{struct \mbox{\hyperlink{structrtr__bgpsec__nlri}{rtr\+\_\+bgpsec\+\_\+nlri}} \texorpdfstring{$\ast$}{*}}]{nlri }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{bgpsec__private_8h}{rtrlib/bgpsec/bgpsec\+\_\+private.\+h}}$>$}



Initializes and returns a pointer to a \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em alg} & The Algorithm Suite Identifier. \\
\hline
\mbox{\texttt{ in}}  & {\em safi} & The Subsequent Address Family Identifier. \\
\hline
\mbox{\texttt{ in}}  & {\em afi} & The Address Family Identifier. \\
\hline
\mbox{\texttt{ in}}  & {\em my\+\_\+as} & The AS that is currently performing validation (you). \\
\hline
\mbox{\texttt{ in}}  & {\em target\+\_\+as} & The AS where the update should be sent to. \\
\hline
\mbox{\texttt{ in}}  & {\em nlri} & The Network Layer Reachability Information. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A pointer to an initialized \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct. 
\end{DoxyReturn}
\Hypertarget{group__mod__bgpsec__h_ga9315b7fd791d37dfdd4c8ecd1f900112}\label{group__mod__bgpsec__h_ga9315b7fd791d37dfdd4c8ecd1f900112} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_bgpsec\_new\_secure\_path\_seg@{rtr\_bgpsec\_new\_secure\_path\_seg}}
\index{rtr\_bgpsec\_new\_secure\_path\_seg@{rtr\_bgpsec\_new\_secure\_path\_seg}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_bgpsec\_new\_secure\_path\_seg()}{rtr\_bgpsec\_new\_secure\_path\_seg()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}} \texorpdfstring{$\ast$}{*} rtr\+\_\+bgpsec\+\_\+new\+\_\+secure\+\_\+path\+\_\+seg (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{pcount,  }\item[{uint8\+\_\+t}]{flags,  }\item[{uint32\+\_\+t}]{asn }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{bgpsec__private_8h}{rtrlib/bgpsec/bgpsec\+\_\+private.\+h}}$>$}



Return an allocated and initialized Secure Path Segment. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em pcount} & The pcount field. \\
\hline
\mbox{\texttt{ in}}  & {\em flags} & The flags field. \\
\hline
\mbox{\texttt{ in}}  & {\em asn} & The ASN of the segment. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A pointer to an initialized \doxylink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg} struct or NULL if an error occurred, e.\+g. the memory allocation failed. 
\end{DoxyReturn}
\Hypertarget{group__mod__bgpsec__h_ga3c7a099f5bea442916ac5e8077611388}\label{group__mod__bgpsec__h_ga3c7a099f5bea442916ac5e8077611388} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_bgpsec\_new\_signature\_seg@{rtr\_bgpsec\_new\_signature\_seg}}
\index{rtr\_bgpsec\_new\_signature\_seg@{rtr\_bgpsec\_new\_signature\_seg}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_bgpsec\_new\_signature\_seg()}{rtr\_bgpsec\_new\_signature\_seg()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*} rtr\+\_\+bgpsec\+\_\+new\+\_\+signature\+\_\+seg (\begin{DoxyParamCaption}\item[{uint8\+\_\+t \texorpdfstring{$\ast$}{*}}]{ski,  }\item[{uint16\+\_\+t}]{sig\+\_\+len,  }\item[{uint8\+\_\+t \texorpdfstring{$\ast$}{*}}]{signature }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{bgpsec__private_8h}{rtrlib/bgpsec/bgpsec\+\_\+private.\+h}}$>$}



Return an allocated and initialized Signature. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em ski} & The Subject Key Identifier as byte representation. \\
\hline
\mbox{\texttt{ in}}  & {\em sig\+\_\+len} & The length of the signature. \\
\hline
\mbox{\texttt{ in}}  & {\em signature} & The signature itself. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A pointer to an initialized \doxylink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg} struct. \doxylink{group__mod__bgpsec__h_gaed4b28efa853473e1c780a35292b2285}{rtr\+\_\+signature\+\_\+seg\+::signature} is allocated with sig\+\_\+len bytes. 
\end{DoxyReturn}
\Hypertarget{group__mod__bgpsec__h_ga7341c1f304638573b90f9577d6c7b2e7}\label{group__mod__bgpsec__h_ga7341c1f304638573b90f9577d6c7b2e7} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_bgpsec\_nlri\_free@{rtr\_bgpsec\_nlri\_free}}
\index{rtr\_bgpsec\_nlri\_free@{rtr\_bgpsec\_nlri\_free}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_bgpsec\_nlri\_free()}{rtr\_bgpsec\_nlri\_free()}}
{\footnotesize\ttfamily void rtr\+\_\+bgpsec\+\_\+nlri\+\_\+free (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structrtr__bgpsec__nlri}{rtr\+\_\+bgpsec\+\_\+nlri}} \texorpdfstring{$\ast$}{*}}]{nlri }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{bgpsec__private_8h}{rtrlib/bgpsec/bgpsec\+\_\+private.\+h}}$>$}



Free a \doxylink{structrtr__bgpsec__nlri}{rtr\+\_\+bgpsec\+\_\+nlri} struct. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em nlri} & The \doxylink{structrtr__bgpsec__nlri}{rtr\+\_\+bgpsec\+\_\+nlri} struct that is to be freed. \\
\hline
\end{DoxyParams}
\Hypertarget{group__mod__bgpsec__h_gab9e9157e6a9346340532f9bd61d572f3}\label{group__mod__bgpsec__h_gab9e9157e6a9346340532f9bd61d572f3} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_bgpsec\_nlri\_new@{rtr\_bgpsec\_nlri\_new}}
\index{rtr\_bgpsec\_nlri\_new@{rtr\_bgpsec\_nlri\_new}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_bgpsec\_nlri\_new()}{rtr\_bgpsec\_nlri\_new()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{structrtr__bgpsec__nlri}{rtr\+\_\+bgpsec\+\_\+nlri}} \texorpdfstring{$\ast$}{*} rtr\+\_\+bgpsec\+\_\+nlri\+\_\+new (\begin{DoxyParamCaption}\item[{int}]{nlri\+\_\+len }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{bgpsec__private_8h}{rtrlib/bgpsec/bgpsec\+\_\+private.\+h}}$>$}



Allocate memory for a \doxylink{structrtr__bgpsec__nlri}{rtr\+\_\+bgpsec\+\_\+nlri} struct. 

\begin{DoxyReturn}{Returns}
A pointer to an allocated \doxylink{structrtr__bgpsec__nlri}{rtr\+\_\+bgpsec\+\_\+nlri} struct or NULL if the memory allocation failed. 
\end{DoxyReturn}
\Hypertarget{group__mod__bgpsec__h_gaf4f16784026638c9edd45f1a02d2c230}\label{group__mod__bgpsec__h_gaf4f16784026638c9edd45f1a02d2c230} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_bgpsec\_pop\_secure\_path\_seg@{rtr\_bgpsec\_pop\_secure\_path\_seg}}
\index{rtr\_bgpsec\_pop\_secure\_path\_seg@{rtr\_bgpsec\_pop\_secure\_path\_seg}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_bgpsec\_pop\_secure\_path\_seg()}{rtr\_bgpsec\_pop\_secure\_path\_seg()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}} \texorpdfstring{$\ast$}{*} rtr\+\_\+bgpsec\+\_\+pop\+\_\+secure\+\_\+path\+\_\+seg (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}}]{bgpsec }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{bgpsec__private_8h}{rtrlib/bgpsec/bgpsec\+\_\+private.\+h}}$>$}



Pop off the first Secure Path Segment from a given \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct and return this Secure Path Segment. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em bgpsec} & The \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct containing the Secure Path Segments \doxylink{group__mod__bgpsec__h_ga70c566ac333d38b555585a204f6fdb86}{rtr\+\_\+bgpsec\+::path}. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The Secure Path Segment that was popped off from \doxylink{group__mod__bgpsec__h_ga70c566ac333d38b555585a204f6fdb86}{rtr\+\_\+bgpsec\+::path}. 
\end{DoxyReturn}
\Hypertarget{group__mod__bgpsec__h_ga6faeb7d092e87b550f1abe39450e6fcc}\label{group__mod__bgpsec__h_ga6faeb7d092e87b550f1abe39450e6fcc} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_bgpsec\_pop\_signature\_seg@{rtr\_bgpsec\_pop\_signature\_seg}}
\index{rtr\_bgpsec\_pop\_signature\_seg@{rtr\_bgpsec\_pop\_signature\_seg}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_bgpsec\_pop\_signature\_seg()}{rtr\_bgpsec\_pop\_signature\_seg()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*} rtr\+\_\+bgpsec\+\_\+pop\+\_\+signature\+\_\+seg (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}}]{bgpsec }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{bgpsec__private_8h}{rtrlib/bgpsec/bgpsec\+\_\+private.\+h}}$>$}



Pop off the first Signature Segment from a given \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct and return this Signature Segment. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em bgpsec} & The \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct containing the Signature Segments \doxylink{group__mod__bgpsec__h_ga9ac4281b75fa0e3b0f33d5eb7ca26d56}{rtr\+\_\+bgpsec\+::sigs}. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
The Signature Segment that was popped off from \doxylink{group__mod__bgpsec__h_ga9ac4281b75fa0e3b0f33d5eb7ca26d56}{rtr\+\_\+bgpsec\+::sigs}. 
\end{DoxyReturn}
\Hypertarget{group__mod__bgpsec__h_ga2d4bd0a47d34c79c34c1aa011d9f474f}\label{group__mod__bgpsec__h_ga2d4bd0a47d34c79c34c1aa011d9f474f} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_bgpsec\_prepend\_sec\_path\_seg@{rtr\_bgpsec\_prepend\_sec\_path\_seg}}
\index{rtr\_bgpsec\_prepend\_sec\_path\_seg@{rtr\_bgpsec\_prepend\_sec\_path\_seg}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_bgpsec\_prepend\_sec\_path\_seg()}{rtr\_bgpsec\_prepend\_sec\_path\_seg()}}
{\footnotesize\ttfamily void rtr\+\_\+bgpsec\+\_\+prepend\+\_\+sec\+\_\+path\+\_\+seg (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}}]{bgpsec,  }\item[{struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}} \texorpdfstring{$\ast$}{*}}]{new\+\_\+seg }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{bgpsec__private_8h}{rtrlib/bgpsec/bgpsec\+\_\+private.\+h}}$>$}



Prepend a given Secure Path Segment to \doxylink{group__mod__bgpsec__h_ga70c566ac333d38b555585a204f6fdb86}{rtr\+\_\+bgpsec\+::path}. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em bgpsec} & The \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct that holds the path. \\
\hline
\mbox{\texttt{ in}}  & {\em new\+\_\+seg} & The Secure Path Segment that is appended to the path. \\
\hline
\end{DoxyParams}
\Hypertarget{group__mod__bgpsec__h_ga785406619b2c36285bcaba7e5bc70153}\label{group__mod__bgpsec__h_ga785406619b2c36285bcaba7e5bc70153} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_bgpsec\_prepend\_sig\_seg@{rtr\_bgpsec\_prepend\_sig\_seg}}
\index{rtr\_bgpsec\_prepend\_sig\_seg@{rtr\_bgpsec\_prepend\_sig\_seg}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_bgpsec\_prepend\_sig\_seg()}{rtr\_bgpsec\_prepend\_sig\_seg()}}
{\footnotesize\ttfamily int rtr\+\_\+bgpsec\+\_\+prepend\+\_\+sig\+\_\+seg (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}}]{bgpsec,  }\item[{struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}}]{new\+\_\+seg }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{bgpsec__private_8h}{rtrlib/bgpsec/bgpsec\+\_\+private.\+h}}$>$}



Prepend a given Signature Segment to \doxylink{group__mod__bgpsec__h_ga9ac4281b75fa0e3b0f33d5eb7ca26d56}{rtr\+\_\+bgpsec\+::sigs}. 

All fields of the new\+\_\+seg must be filled. 
\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em bgpsec} & The \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct that holds the signatures. \\
\hline
\mbox{\texttt{ in}}  & {\em new\+\_\+seg} & The Signature Segment that is appended to the signatures. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
RTR\+\_\+\+BGPSEC\+\_\+\+SUCCESS If the signature was successfully prepended. 

RTR\+\_\+\+BGPSEC\+\_\+\+ERROR If an error occurred during prepending, e.\+g. one or more fields of new\+\_\+seg was missing. 
\end{DoxyReturn}
\Hypertarget{group__mod__bgpsec__h_gaf4f652ef6e5930e5af320b5f2fac4904}\label{group__mod__bgpsec__h_gaf4f652ef6e5930e5af320b5f2fac4904} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_bgpsec\_validate\_as\_path@{rtr\_bgpsec\_validate\_as\_path}}
\index{rtr\_bgpsec\_validate\_as\_path@{rtr\_bgpsec\_validate\_as\_path}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_bgpsec\_validate\_as\_path()}{rtr\_bgpsec\_validate\_as\_path()}}
{\footnotesize\ttfamily int rtr\+\_\+bgpsec\+\_\+validate\+\_\+as\+\_\+path (\begin{DoxyParamCaption}\item[{const struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}}]{data,  }\item[{struct \mbox{\hyperlink{structspki__table}{spki\+\_\+table}} \texorpdfstring{$\ast$}{*}}]{table }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{bgpsec__private_8h}{rtrlib/bgpsec/bgpsec\+\_\+private.\+h}}$>$}



Validation function for AS path validation. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em data} & Data required for AS path validation. See \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec}. \\
\hline
\mbox{\texttt{ in}}  & {\em table} & The SPKI table that contains the router keys. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
RTR\+\_\+\+BGPSEC\+\_\+\+VALID If the AS path was valid. 

RTR\+\_\+\+BGPSEC\+\_\+\+NOT\+\_\+\+VALID If the AS path was not valid. 

RTR\+\_\+\+BGPSEC\+\_\+\+ERROR If an error occurred. Refer to error codes for more details. 
\end{DoxyReturn}
\Hypertarget{group__mod__bgpsec__h_gad5bdb4e9a6956d387bb7d1598e129242}\label{group__mod__bgpsec__h_gad5bdb4e9a6956d387bb7d1598e129242} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_mgr\_bgpsec\_add\_spki\_record@{rtr\_mgr\_bgpsec\_add\_spki\_record}}
\index{rtr\_mgr\_bgpsec\_add\_spki\_record@{rtr\_mgr\_bgpsec\_add\_spki\_record}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_mgr\_bgpsec\_add\_spki\_record()}{rtr\_mgr\_bgpsec\_add\_spki\_record()}}
{\footnotesize\ttfamily void rtr\+\_\+mgr\+\_\+bgpsec\+\_\+add\+\_\+spki\+\_\+record (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structrtr__mgr__config}{rtr\+\_\+mgr\+\_\+config}} \texorpdfstring{$\ast$}{*}}]{config,  }\item[{struct \mbox{\hyperlink{structspki__record}{spki\+\_\+record}} \texorpdfstring{$\ast$}{*}}]{record }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{rtr__mgr_8h}{rtrlib/rtr\+\_\+mgr.\+h}}$>$}

\Hypertarget{group__mod__bgpsec__h_gae064e87f7417c7a2d59a24914c968668}\label{group__mod__bgpsec__h_gae064e87f7417c7a2d59a24914c968668} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_mgr\_bgpsec\_append\_sec\_path\_seg@{rtr\_mgr\_bgpsec\_append\_sec\_path\_seg}}
\index{rtr\_mgr\_bgpsec\_append\_sec\_path\_seg@{rtr\_mgr\_bgpsec\_append\_sec\_path\_seg}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_mgr\_bgpsec\_append\_sec\_path\_seg()}{rtr\_mgr\_bgpsec\_append\_sec\_path\_seg()}}
{\footnotesize\ttfamily void rtr\+\_\+mgr\+\_\+bgpsec\+\_\+append\+\_\+sec\+\_\+path\+\_\+seg (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}}]{bgpsec,  }\item[{struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}} \texorpdfstring{$\ast$}{*}}]{new\+\_\+seg }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{rtr__mgr_8h}{rtrlib/rtr\+\_\+mgr.\+h}}$>$}

\Hypertarget{group__mod__bgpsec__h_ga8f0c212f739708bb38773641bb8352d7}\label{group__mod__bgpsec__h_ga8f0c212f739708bb38773641bb8352d7} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_mgr\_bgpsec\_append\_sig\_seg@{rtr\_mgr\_bgpsec\_append\_sig\_seg}}
\index{rtr\_mgr\_bgpsec\_append\_sig\_seg@{rtr\_mgr\_bgpsec\_append\_sig\_seg}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_mgr\_bgpsec\_append\_sig\_seg()}{rtr\_mgr\_bgpsec\_append\_sig\_seg()}}
{\footnotesize\ttfamily int rtr\+\_\+mgr\+\_\+bgpsec\+\_\+append\+\_\+sig\+\_\+seg (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}}]{bgpsec,  }\item[{struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}}]{new\+\_\+seg }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{rtr__mgr_8h}{rtrlib/rtr\+\_\+mgr.\+h}}$>$}

\Hypertarget{group__mod__bgpsec__h_ga9ceb6a57f16491ea2bf620ea289d5e43}\label{group__mod__bgpsec__h_ga9ceb6a57f16491ea2bf620ea289d5e43} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_mgr\_bgpsec\_free@{rtr\_mgr\_bgpsec\_free}}
\index{rtr\_mgr\_bgpsec\_free@{rtr\_mgr\_bgpsec\_free}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_mgr\_bgpsec\_free()}{rtr\_mgr\_bgpsec\_free()}}
{\footnotesize\ttfamily void rtr\+\_\+mgr\+\_\+bgpsec\+\_\+free (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}}]{bgpsec }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{rtr__mgr_8h}{rtrlib/rtr\+\_\+mgr.\+h}}$>$}



Free a \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct and any Secure Path and Signature Segments it holds. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em bgpsec} & The \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct that is to be freed. \\
\hline
\end{DoxyParams}
\Hypertarget{group__mod__bgpsec__h_gaf9d3006e8030ed9a277908affd93ffe6}\label{group__mod__bgpsec__h_gaf9d3006e8030ed9a277908affd93ffe6} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_mgr\_bgpsec\_free\_signatures@{rtr\_mgr\_bgpsec\_free\_signatures}}
\index{rtr\_mgr\_bgpsec\_free\_signatures@{rtr\_mgr\_bgpsec\_free\_signatures}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_mgr\_bgpsec\_free\_signatures()}{rtr\_mgr\_bgpsec\_free\_signatures()}}
{\footnotesize\ttfamily void rtr\+\_\+mgr\+\_\+bgpsec\+\_\+free\+\_\+signatures (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}}]{seg }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{rtr__mgr_8h}{rtrlib/rtr\+\_\+mgr.\+h}}$>$}



Free a signature and any signatures that are pointed to. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em seg} & The signature that has been passed to the signing function. \\
\hline
\end{DoxyParams}
\Hypertarget{group__mod__bgpsec__h_ga02191e23df60ef7065f10bf73025f34b}\label{group__mod__bgpsec__h_ga02191e23df60ef7065f10bf73025f34b} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_mgr\_bgpsec\_generate\_signature@{rtr\_mgr\_bgpsec\_generate\_signature}}
\index{rtr\_mgr\_bgpsec\_generate\_signature@{rtr\_mgr\_bgpsec\_generate\_signature}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_mgr\_bgpsec\_generate\_signature()}{rtr\_mgr\_bgpsec\_generate\_signature()}}
{\footnotesize\ttfamily int rtr\+\_\+mgr\+\_\+bgpsec\+\_\+generate\+\_\+signature (\begin{DoxyParamCaption}\item[{const struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}}]{data,  }\item[{uint8\+\_\+t \texorpdfstring{$\ast$}{*}}]{private\+\_\+key,  }\item[{struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}}]{new\+\_\+signature }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{rtr__mgr_8h}{rtrlib/rtr\+\_\+mgr.\+h}}$>$}



Signing function for a BGPsec\+\_\+\+PATH. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em data} & Data required for AS path validation. See \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec}. \\
\hline
\mbox{\texttt{ in}}  & {\em private\+\_\+key} & The raw bytes of the private key that is used for signing. \\
\hline
\mbox{\texttt{ out}}  & {\em new\+\_\+signature} & Contains the generated signature and its length if successful. Must not be allocated. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
RTR\+\_\+\+BGPSEC\+\_\+\+SUCCESS If the signature was successfully generated. 

RTR\+\_\+\+BGPSEC\+\_\+\+ERROR If an error occurred. Refer to error codes for more details. 
\end{DoxyReturn}
\Hypertarget{group__mod__bgpsec__h_ga9e207041eaa0b33661a729ef03435b22}\label{group__mod__bgpsec__h_ga9e207041eaa0b33661a729ef03435b22} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_mgr\_bgpsec\_get\_algorithm\_suites@{rtr\_mgr\_bgpsec\_get\_algorithm\_suites}}
\index{rtr\_mgr\_bgpsec\_get\_algorithm\_suites@{rtr\_mgr\_bgpsec\_get\_algorithm\_suites}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_mgr\_bgpsec\_get\_algorithm\_suites()}{rtr\_mgr\_bgpsec\_get\_algorithm\_suites()}}
{\footnotesize\ttfamily int rtr\+\_\+mgr\+\_\+bgpsec\+\_\+get\+\_\+algorithm\+\_\+suites (\begin{DoxyParamCaption}\item[{const uint8\+\_\+t \texorpdfstring{$\ast$}{*}\texorpdfstring{$\ast$}{*}}]{algs\+\_\+arr }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{rtr__mgr_8h}{rtrlib/rtr\+\_\+mgr.\+h}}$>$}



Returns pointer to a list that holds all supported algorithm suites. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ out}}  & {\em algs\+\_\+arr} & A char pointer that contains all supported suites. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
ALGORITHM\+\_\+\+SUITES\+\_\+\+COUNT The size of algs\+\_\+arr 
\end{DoxyReturn}
\Hypertarget{group__mod__bgpsec__h_gaa25054a937c4d711b4a7536881a2e4ea}\label{group__mod__bgpsec__h_gaa25054a937c4d711b4a7536881a2e4ea} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_mgr\_bgpsec\_get\_version@{rtr\_mgr\_bgpsec\_get\_version}}
\index{rtr\_mgr\_bgpsec\_get\_version@{rtr\_mgr\_bgpsec\_get\_version}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_mgr\_bgpsec\_get\_version()}{rtr\_mgr\_bgpsec\_get\_version()}}
{\footnotesize\ttfamily int rtr\+\_\+mgr\+\_\+bgpsec\+\_\+get\+\_\+version (\begin{DoxyParamCaption}\item[{void}]{ }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{rtr__mgr_8h}{rtrlib/rtr\+\_\+mgr.\+h}}$>$}



Returns the highest supported BGPsec version. 

\begin{DoxyReturn}{Returns}
RTR\+\_\+\+BGPSEC\+\_\+\+VERSION The currently supported BGPsec version. 
\end{DoxyReturn}
\Hypertarget{group__mod__bgpsec__h_ga44d36f1ae84b494d71b8bc3cb9344b2c}\label{group__mod__bgpsec__h_ga44d36f1ae84b494d71b8bc3cb9344b2c} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_mgr\_bgpsec\_has\_algorithm\_suite@{rtr\_mgr\_bgpsec\_has\_algorithm\_suite}}
\index{rtr\_mgr\_bgpsec\_has\_algorithm\_suite@{rtr\_mgr\_bgpsec\_has\_algorithm\_suite}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_mgr\_bgpsec\_has\_algorithm\_suite()}{rtr\_mgr\_bgpsec\_has\_algorithm\_suite()}}
{\footnotesize\ttfamily int rtr\+\_\+mgr\+\_\+bgpsec\+\_\+has\+\_\+algorithm\+\_\+suite (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{alg\+\_\+suite }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{rtr__mgr_8h}{rtrlib/rtr\+\_\+mgr.\+h}}$>$}



Check, if an algorithm suite is supported by RTRlib. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em alg\+\_\+suite} & The algorithm suite that is to be checked. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
RTR\+\_\+\+BGPSEC\+\_\+\+SUCCESS If the algorithm suite is supported. 

RTR\+\_\+\+BGPSEC\+\_\+\+ERROR If the algorithm suite is not supported. 
\end{DoxyReturn}
\Hypertarget{group__mod__bgpsec__h_ga1647a76f6faa7bdff40fdceaa36cf344}\label{group__mod__bgpsec__h_ga1647a76f6faa7bdff40fdceaa36cf344} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_mgr\_bgpsec\_new@{rtr\_mgr\_bgpsec\_new}}
\index{rtr\_mgr\_bgpsec\_new@{rtr\_mgr\_bgpsec\_new}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_mgr\_bgpsec\_new()}{rtr\_mgr\_bgpsec\_new()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*} rtr\+\_\+mgr\+\_\+bgpsec\+\_\+new (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{alg,  }\item[{uint8\+\_\+t}]{safi,  }\item[{uint16\+\_\+t}]{afi,  }\item[{uint32\+\_\+t}]{my\+\_\+as,  }\item[{uint32\+\_\+t}]{target\+\_\+as,  }\item[{struct \mbox{\hyperlink{structrtr__bgpsec__nlri}{rtr\+\_\+bgpsec\+\_\+nlri}} \texorpdfstring{$\ast$}{*}}]{nlri }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{rtr__mgr_8h}{rtrlib/rtr\+\_\+mgr.\+h}}$>$}



Initializes and returns a pointer to a \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em alg} & The Algorithm Suite Identifier. \\
\hline
\mbox{\texttt{ in}}  & {\em safi} & The Subsequent Address Family Identifier. \\
\hline
\mbox{\texttt{ in}}  & {\em afi} & The Address Family Identifier. \\
\hline
\mbox{\texttt{ in}}  & {\em my\+\_\+as} & The AS that is currently performing validation (you). \\
\hline
\mbox{\texttt{ in}}  & {\em target\+\_\+as} & The AS where the update should be sent to. \\
\hline
\mbox{\texttt{ in}}  & {\em nlri} & The Network Layer Reachability Information. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A pointer to an initialized \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct. 
\end{DoxyReturn}
\Hypertarget{group__mod__bgpsec__h_gae8901042f22059377d0b65401d0fb3ce}\label{group__mod__bgpsec__h_gae8901042f22059377d0b65401d0fb3ce} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_mgr\_bgpsec\_new\_secure\_path\_seg@{rtr\_mgr\_bgpsec\_new\_secure\_path\_seg}}
\index{rtr\_mgr\_bgpsec\_new\_secure\_path\_seg@{rtr\_mgr\_bgpsec\_new\_secure\_path\_seg}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_mgr\_bgpsec\_new\_secure\_path\_seg()}{rtr\_mgr\_bgpsec\_new\_secure\_path\_seg()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}} \texorpdfstring{$\ast$}{*} rtr\+\_\+mgr\+\_\+bgpsec\+\_\+new\+\_\+secure\+\_\+path\+\_\+seg (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{pcount,  }\item[{uint8\+\_\+t}]{flags,  }\item[{uint32\+\_\+t}]{asn }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{rtr__mgr_8h}{rtrlib/rtr\+\_\+mgr.\+h}}$>$}



Return an allocated and initialized Secure Path Segment. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em pcount} & The pcount field. \\
\hline
\mbox{\texttt{ in}}  & {\em flags} & The flags field. \\
\hline
\mbox{\texttt{ in}}  & {\em asn} & The ASN of the segment. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A pointer to an initialized \doxylink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg} struct or NULL if an error occurred, e.\+g. the memory allocation failed. 
\end{DoxyReturn}
\Hypertarget{group__mod__bgpsec__h_gae4718b94b70313a593eb99d1a9f1985e}\label{group__mod__bgpsec__h_gae4718b94b70313a593eb99d1a9f1985e} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_mgr\_bgpsec\_new\_signature\_seg@{rtr\_mgr\_bgpsec\_new\_signature\_seg}}
\index{rtr\_mgr\_bgpsec\_new\_signature\_seg@{rtr\_mgr\_bgpsec\_new\_signature\_seg}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_mgr\_bgpsec\_new\_signature\_seg()}{rtr\_mgr\_bgpsec\_new\_signature\_seg()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*} rtr\+\_\+mgr\+\_\+bgpsec\+\_\+new\+\_\+signature\+\_\+seg (\begin{DoxyParamCaption}\item[{uint8\+\_\+t \texorpdfstring{$\ast$}{*}}]{ski,  }\item[{uint16\+\_\+t}]{sig\+\_\+len,  }\item[{uint8\+\_\+t \texorpdfstring{$\ast$}{*}}]{signature }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{rtr__mgr_8h}{rtrlib/rtr\+\_\+mgr.\+h}}$>$}



Return an allocated and initialized Signature. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em ski} & The Subject Key Identifier as byte representation. \\
\hline
\mbox{\texttt{ in}}  & {\em sig\+\_\+len} & The length of the signature. \\
\hline
\mbox{\texttt{ in}}  & {\em signature} & The signature itself. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A pointer to an initialized \doxylink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg} struct. \doxylink{group__mod__bgpsec__h_gaed4b28efa853473e1c780a35292b2285}{rtr\+\_\+signature\+\_\+seg\+::signature} is allocated with sig\+\_\+len bytes. 
\end{DoxyReturn}
\Hypertarget{group__mod__bgpsec__h_ga4341f88be93d24123063e32b5ec0e198}\label{group__mod__bgpsec__h_ga4341f88be93d24123063e32b5ec0e198} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_mgr\_bgpsec\_nlri\_free@{rtr\_mgr\_bgpsec\_nlri\_free}}
\index{rtr\_mgr\_bgpsec\_nlri\_free@{rtr\_mgr\_bgpsec\_nlri\_free}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_mgr\_bgpsec\_nlri\_free()}{rtr\_mgr\_bgpsec\_nlri\_free()}}
{\footnotesize\ttfamily void rtr\+\_\+mgr\+\_\+bgpsec\+\_\+nlri\+\_\+free (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structrtr__bgpsec__nlri}{rtr\+\_\+bgpsec\+\_\+nlri}} \texorpdfstring{$\ast$}{*}}]{nlri }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{rtr__mgr_8h}{rtrlib/rtr\+\_\+mgr.\+h}}$>$}

\Hypertarget{group__mod__bgpsec__h_ga7d836e01783b448ed120e986867884d3}\label{group__mod__bgpsec__h_ga7d836e01783b448ed120e986867884d3} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_mgr\_bgpsec\_nlri\_new@{rtr\_mgr\_bgpsec\_nlri\_new}}
\index{rtr\_mgr\_bgpsec\_nlri\_new@{rtr\_mgr\_bgpsec\_nlri\_new}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_mgr\_bgpsec\_nlri\_new()}{rtr\_mgr\_bgpsec\_nlri\_new()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{structrtr__bgpsec__nlri}{rtr\+\_\+bgpsec\+\_\+nlri}} \texorpdfstring{$\ast$}{*} rtr\+\_\+mgr\+\_\+bgpsec\+\_\+nlri\+\_\+new (\begin{DoxyParamCaption}\item[{int}]{nlri\+\_\+len }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{rtr__mgr_8h}{rtrlib/rtr\+\_\+mgr.\+h}}$>$}

\Hypertarget{group__mod__bgpsec__h_gacd999a5a72669ace81415ef8d14e855d}\label{group__mod__bgpsec__h_gacd999a5a72669ace81415ef8d14e855d} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_mgr\_bgpsec\_pop\_secure\_path\_seg@{rtr\_mgr\_bgpsec\_pop\_secure\_path\_seg}}
\index{rtr\_mgr\_bgpsec\_pop\_secure\_path\_seg@{rtr\_mgr\_bgpsec\_pop\_secure\_path\_seg}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_mgr\_bgpsec\_pop\_secure\_path\_seg()}{rtr\_mgr\_bgpsec\_pop\_secure\_path\_seg()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}} \texorpdfstring{$\ast$}{*} rtr\+\_\+mgr\+\_\+bgpsec\+\_\+pop\+\_\+secure\+\_\+path\+\_\+seg (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}}]{bgpsec }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{rtr__mgr_8h}{rtrlib/rtr\+\_\+mgr.\+h}}$>$}



Retrieve a pointer to the last appended Secure Path Segment from a bgpsec struct. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em bgpsec} & The bgpsec struct that contains the Secure Path. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\texorpdfstring{$\ast$}{*}rtr\+\_\+secure\+\_\+path\+\_\+seg If \doxylink{group__mod__bgpsec__h_gaedca6831731b38f3a900b5d261991afe}{rtr\+\_\+bgpsec\+::path\+\_\+len} \texorpdfstring{$>$}{>} 0. 

NULL If \doxylink{group__mod__bgpsec__h_gaedca6831731b38f3a900b5d261991afe}{rtr\+\_\+bgpsec\+::path\+\_\+len} = 0. 
\end{DoxyReturn}
\Hypertarget{group__mod__bgpsec__h_gac740f9108edae0a37ff307f278f6d461}\label{group__mod__bgpsec__h_gac740f9108edae0a37ff307f278f6d461} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_mgr\_bgpsec\_pop\_signature\_seg@{rtr\_mgr\_bgpsec\_pop\_signature\_seg}}
\index{rtr\_mgr\_bgpsec\_pop\_signature\_seg@{rtr\_mgr\_bgpsec\_pop\_signature\_seg}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_mgr\_bgpsec\_pop\_signature\_seg()}{rtr\_mgr\_bgpsec\_pop\_signature\_seg()}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*} rtr\+\_\+mgr\+\_\+bgpsec\+\_\+pop\+\_\+signature\+\_\+seg (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}}]{bgpsec }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{rtr__mgr_8h}{rtrlib/rtr\+\_\+mgr.\+h}}$>$}



Retrieve a pointer to the last appended Signature Segment from a bgpsec struct. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em bgpsec} & The bgpsec struct that contains the Signatures. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\texorpdfstring{$\ast$}{*}rtr\+\_\+signature\+\_\+seg If \doxylink{group__mod__bgpsec__h_gac0558d937e2a8b152bf910538ebb5cd5}{rtr\+\_\+bgpsec\+::sigs\+\_\+len} \texorpdfstring{$>$}{>} 0. 

NULL if \doxylink{group__mod__bgpsec__h_gac0558d937e2a8b152bf910538ebb5cd5}{rtr\+\_\+bgpsec\+::sigs\+\_\+len} = 0. 
\end{DoxyReturn}
\Hypertarget{group__mod__bgpsec__h_gad8d0724e1322c2f030bba2780643cca1}\label{group__mod__bgpsec__h_gad8d0724e1322c2f030bba2780643cca1} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_mgr\_bgpsec\_prepend\_sec\_path\_seg@{rtr\_mgr\_bgpsec\_prepend\_sec\_path\_seg}}
\index{rtr\_mgr\_bgpsec\_prepend\_sec\_path\_seg@{rtr\_mgr\_bgpsec\_prepend\_sec\_path\_seg}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_mgr\_bgpsec\_prepend\_sec\_path\_seg()}{rtr\_mgr\_bgpsec\_prepend\_sec\_path\_seg()}}
{\footnotesize\ttfamily void rtr\+\_\+mgr\+\_\+bgpsec\+\_\+prepend\+\_\+sec\+\_\+path\+\_\+seg (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}}]{bgpsec,  }\item[{struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}} \texorpdfstring{$\ast$}{*}}]{new\+\_\+seg }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{rtr__mgr_8h}{rtrlib/rtr\+\_\+mgr.\+h}}$>$}



Prepend a given Secure Path Segment to \doxylink{group__mod__bgpsec__h_ga70c566ac333d38b555585a204f6fdb86}{rtr\+\_\+bgpsec\+::path}. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em bgpsec} & The \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct that holds the path. \\
\hline
\mbox{\texttt{ in}}  & {\em new\+\_\+seg} & The Secure Path Segment that is appended to the path. \\
\hline
\end{DoxyParams}
\Hypertarget{group__mod__bgpsec__h_ga3ed9f03a167dcafec5c817aadb3a2cc1}\label{group__mod__bgpsec__h_ga3ed9f03a167dcafec5c817aadb3a2cc1} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_mgr\_bgpsec\_prepend\_sig\_seg@{rtr\_mgr\_bgpsec\_prepend\_sig\_seg}}
\index{rtr\_mgr\_bgpsec\_prepend\_sig\_seg@{rtr\_mgr\_bgpsec\_prepend\_sig\_seg}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_mgr\_bgpsec\_prepend\_sig\_seg()}{rtr\_mgr\_bgpsec\_prepend\_sig\_seg()}}
{\footnotesize\ttfamily int rtr\+\_\+mgr\+\_\+bgpsec\+\_\+prepend\+\_\+sig\+\_\+seg (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}}]{bgpsec,  }\item[{struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}} \texorpdfstring{$\ast$}{*}}]{new\+\_\+seg }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{rtr__mgr_8h}{rtrlib/rtr\+\_\+mgr.\+h}}$>$}



Prepend a given Signature Segment to \doxylink{group__mod__bgpsec__h_ga9ac4281b75fa0e3b0f33d5eb7ca26d56}{rtr\+\_\+bgpsec\+::sigs}. 

All fields of the new\+\_\+seg must be filled. 
\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em bgpsec} & The \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec} struct that holds the signatures. \\
\hline
\mbox{\texttt{ in}}  & {\em new\+\_\+seg} & The Signature Segment that is appended to the signatures. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
RTR\+\_\+\+BGPSEC\+\_\+\+SUCCESS If the signature was successfully prepended. 

RTR\+\_\+\+BGPSEC\+\_\+\+ERROR If an error occurred during prepending, e.\+g. one or more fields of new\+\_\+seg was missing. 
\end{DoxyReturn}
\Hypertarget{group__mod__bgpsec__h_gaf9badeb7acc29cff0418eee9e588de43}\label{group__mod__bgpsec__h_gaf9badeb7acc29cff0418eee9e588de43} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_mgr\_bgpsec\_validate\_as\_path@{rtr\_mgr\_bgpsec\_validate\_as\_path}}
\index{rtr\_mgr\_bgpsec\_validate\_as\_path@{rtr\_mgr\_bgpsec\_validate\_as\_path}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_mgr\_bgpsec\_validate\_as\_path()}{rtr\_mgr\_bgpsec\_validate\_as\_path()}}
{\footnotesize\ttfamily int rtr\+\_\+mgr\+\_\+bgpsec\+\_\+validate\+\_\+as\+\_\+path (\begin{DoxyParamCaption}\item[{const struct \mbox{\hyperlink{structrtr__bgpsec}{rtr\+\_\+bgpsec}} \texorpdfstring{$\ast$}{*}}]{data,  }\item[{struct \mbox{\hyperlink{structrtr__mgr__config}{rtr\+\_\+mgr\+\_\+config}} \texorpdfstring{$\ast$}{*}}]{config }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{rtr__mgr_8h}{rtrlib/rtr\+\_\+mgr.\+h}}$>$}



Validation function for AS path validation. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em data} & Data required for AS path validation. See \doxylink{structrtr__bgpsec}{rtr\+\_\+bgpsec}. \\
\hline
\mbox{\texttt{ in}}  & {\em config} & The \doxylink{structrtr__mgr__config}{rtr\+\_\+mgr\+\_\+config} containing a SPKI table. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
RTR\+\_\+\+BGPSEC\+\_\+\+VALID If the AS path was valid. 

RTR\+\_\+\+BGPSEC\+\_\+\+NOT\+\_\+\+VALID If the AS path was not valid. 

RTR\+\_\+\+BGPSEC\+\_\+\+ERROR If an error occurred. Refer to error codes for more details. 
\end{DoxyReturn}
\Hypertarget{group__mod__bgpsec__h_gabb9fa496596ad8b5e48eae935fe91e67}\label{group__mod__bgpsec__h_gabb9fa496596ad8b5e48eae935fe91e67} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!rtr\_mgr\_free\_secure\_path@{rtr\_mgr\_free\_secure\_path}}
\index{rtr\_mgr\_free\_secure\_path@{rtr\_mgr\_free\_secure\_path}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{rtr\_mgr\_free\_secure\_path()}{rtr\_mgr\_free\_secure\_path()}}
{\footnotesize\ttfamily void rtr\+\_\+mgr\+\_\+free\+\_\+secure\+\_\+path (\begin{DoxyParamCaption}\item[{struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}} \texorpdfstring{$\ast$}{*}}]{seg }\end{DoxyParamCaption})}



{\ttfamily \#include $<$\mbox{\hyperlink{rtr__mgr_8h}{rtrlib/rtr\+\_\+mgr.\+h}}$>$}



Free a Secure Path Segment and any segments that are pointed to by \doxylink{group__mod__bgpsec__h_gaacb2a93cf30e6cbef1124f8479978bee}{rtr\+\_\+secure\+\_\+path\+\_\+seg\+::next}. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em seg} & The Secure Path Segment that is to be freed. \\
\hline
\end{DoxyParams}


\doxysubsubsection{Variable Documentation}
\Hypertarget{group__mod__bgpsec__h_ga8fdf7a52fdd3292161b9b0a211377417}\label{group__mod__bgpsec__h_ga8fdf7a52fdd3292161b9b0a211377417} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!afi@{afi}}
\index{afi@{afi}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{afi}{afi}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily uint16\+\_\+t rtr\+\_\+bgpsec\+\_\+nlri\+::afi}

\Hypertarget{group__mod__bgpsec__h_gab7dc6b6ed0af13dd11ff846d0fcb42b9}\label{group__mod__bgpsec__h_gab7dc6b6ed0af13dd11ff846d0fcb42b9} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!afi@{afi}}
\index{afi@{afi}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{afi}{afi}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily uint16\+\_\+t rtr\+\_\+bgpsec\+::afi}

\Hypertarget{group__mod__bgpsec__h_gad95c036d25ce114cca924480585b0e97}\label{group__mod__bgpsec__h_gad95c036d25ce114cca924480585b0e97} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!alg@{alg}}
\index{alg@{alg}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{alg}{alg}}
{\footnotesize\ttfamily uint8\+\_\+t rtr\+\_\+bgpsec\+::alg}

\Hypertarget{group__mod__bgpsec__h_ga2f429bf09b57b43aa63ad9b6a3ecdb69}\label{group__mod__bgpsec__h_ga2f429bf09b57b43aa63ad9b6a3ecdb69} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!asn@{asn}}
\index{asn@{asn}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{asn}{asn}}
{\footnotesize\ttfamily uint32\+\_\+t rtr\+\_\+secure\+\_\+path\+\_\+seg\+::asn}

\Hypertarget{group__mod__bgpsec__h_ga047031904be7f4da731d07b2e7bb26e7}\label{group__mod__bgpsec__h_ga047031904be7f4da731d07b2e7bb26e7} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!flags@{flags}}
\index{flags@{flags}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{flags}{flags}}
{\footnotesize\ttfamily uint8\+\_\+t rtr\+\_\+secure\+\_\+path\+\_\+seg\+::flags}

\Hypertarget{group__mod__bgpsec__h_ga4dd9f495b6b7d774b275d6e599918b24}\label{group__mod__bgpsec__h_ga4dd9f495b6b7d774b275d6e599918b24} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!my\_as@{my\_as}}
\index{my\_as@{my\_as}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{my\_as}{my\_as}}
{\footnotesize\ttfamily uint32\+\_\+t rtr\+\_\+bgpsec\+::my\+\_\+as}

\Hypertarget{group__mod__bgpsec__h_gaacb2a93cf30e6cbef1124f8479978bee}\label{group__mod__bgpsec__h_gaacb2a93cf30e6cbef1124f8479978bee} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!next@{next}}
\index{next@{next}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{next}{next}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}}\texorpdfstring{$\ast$}{*} rtr\+\_\+secure\+\_\+path\+\_\+seg\+::next}



Reference to the next Secure Path Segment (do not edit manually). 

\Hypertarget{group__mod__bgpsec__h_gaa59d57a58627423fc3121b4aebed3814}\label{group__mod__bgpsec__h_gaa59d57a58627423fc3121b4aebed3814} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!next@{next}}
\index{next@{next}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{next}{next}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}}\texorpdfstring{$\ast$}{*} rtr\+\_\+signature\+\_\+seg\+::next}

\Hypertarget{group__mod__bgpsec__h_gaeb1c62458cc35831b9ce13c00b7dd011}\label{group__mod__bgpsec__h_gaeb1c62458cc35831b9ce13c00b7dd011} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!nlri@{nlri}}
\index{nlri@{nlri}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{nlri}{nlri}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily uint8\+\_\+t\texorpdfstring{$\ast$}{*} rtr\+\_\+bgpsec\+\_\+nlri\+::nlri}

\Hypertarget{group__mod__bgpsec__h_ga1d80cf9fda81ed3c92cd6df3331c083e}\label{group__mod__bgpsec__h_ga1d80cf9fda81ed3c92cd6df3331c083e} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!nlri@{nlri}}
\index{nlri@{nlri}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{nlri}{nlri}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{structrtr__bgpsec__nlri}{rtr\+\_\+bgpsec\+\_\+nlri}}\texorpdfstring{$\ast$}{*} rtr\+\_\+bgpsec\+::nlri}

\Hypertarget{group__mod__bgpsec__h_gacb97c8e9530cb198806774905ca03e54}\label{group__mod__bgpsec__h_gacb97c8e9530cb198806774905ca03e54} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!nlri\_len@{nlri\_len}}
\index{nlri\_len@{nlri\_len}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{nlri\_len}{nlri\_len}}
{\footnotesize\ttfamily uint8\+\_\+t rtr\+\_\+bgpsec\+\_\+nlri\+::nlri\+\_\+len}

\Hypertarget{group__mod__bgpsec__h_ga70c566ac333d38b555585a204f6fdb86}\label{group__mod__bgpsec__h_ga70c566ac333d38b555585a204f6fdb86} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!path@{path}}
\index{path@{path}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{path}{path}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{structrtr__secure__path__seg}{rtr\+\_\+secure\+\_\+path\+\_\+seg}}\texorpdfstring{$\ast$}{*} rtr\+\_\+bgpsec\+::path}



Reference to the Secure Path Segments. 

\Hypertarget{group__mod__bgpsec__h_gaedca6831731b38f3a900b5d261991afe}\label{group__mod__bgpsec__h_gaedca6831731b38f3a900b5d261991afe} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!path\_len@{path\_len}}
\index{path\_len@{path\_len}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{path\_len}{path\_len}}
{\footnotesize\ttfamily uint8\+\_\+t rtr\+\_\+bgpsec\+::path\+\_\+len}



Count of Secure Path Segments (do not edit manually). 

\Hypertarget{group__mod__bgpsec__h_gae382b67d56735b6edfa721ba591f1175}\label{group__mod__bgpsec__h_gae382b67d56735b6edfa721ba591f1175} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!pcount@{pcount}}
\index{pcount@{pcount}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{pcount}{pcount}}
{\footnotesize\ttfamily uint8\+\_\+t rtr\+\_\+secure\+\_\+path\+\_\+seg\+::pcount}

\Hypertarget{group__mod__bgpsec__h_ga814cbd22dd2c801137b9a9a7f0a70bb6}\label{group__mod__bgpsec__h_ga814cbd22dd2c801137b9a9a7f0a70bb6} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!safi@{safi}}
\index{safi@{safi}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{safi}{safi}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily uint8\+\_\+t rtr\+\_\+bgpsec\+\_\+nlri\+::safi}

\Hypertarget{group__mod__bgpsec__h_ga6a5f2e8fce661744a358244a54aad944}\label{group__mod__bgpsec__h_ga6a5f2e8fce661744a358244a54aad944} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!safi@{safi}}
\index{safi@{safi}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{safi}{safi}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily uint8\+\_\+t rtr\+\_\+bgpsec\+::safi}

\Hypertarget{group__mod__bgpsec__h_gae416f3a1f81da3b5f3df9b1d186bd1a9}\label{group__mod__bgpsec__h_gae416f3a1f81da3b5f3df9b1d186bd1a9} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!sig\_len@{sig\_len}}
\index{sig\_len@{sig\_len}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{sig\_len}{sig\_len}}
{\footnotesize\ttfamily uint16\+\_\+t rtr\+\_\+signature\+\_\+seg\+::sig\+\_\+len}

\Hypertarget{group__mod__bgpsec__h_gaed4b28efa853473e1c780a35292b2285}\label{group__mod__bgpsec__h_gaed4b28efa853473e1c780a35292b2285} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!signature@{signature}}
\index{signature@{signature}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{signature}{signature}}
{\footnotesize\ttfamily uint8\+\_\+t\texorpdfstring{$\ast$}{*} rtr\+\_\+signature\+\_\+seg\+::signature}



The signature of the segment. 

\Hypertarget{group__mod__bgpsec__h_ga9ac4281b75fa0e3b0f33d5eb7ca26d56}\label{group__mod__bgpsec__h_ga9ac4281b75fa0e3b0f33d5eb7ca26d56} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!sigs@{sigs}}
\index{sigs@{sigs}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{sigs}{sigs}}
{\footnotesize\ttfamily struct \mbox{\hyperlink{structrtr__signature__seg}{rtr\+\_\+signature\+\_\+seg}}\texorpdfstring{$\ast$}{*} rtr\+\_\+bgpsec\+::sigs}



Reference to the Signature Segments. 

\Hypertarget{group__mod__bgpsec__h_gac0558d937e2a8b152bf910538ebb5cd5}\label{group__mod__bgpsec__h_gac0558d937e2a8b152bf910538ebb5cd5} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!sigs\_len@{sigs\_len}}
\index{sigs\_len@{sigs\_len}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{sigs\_len}{sigs\_len}}
{\footnotesize\ttfamily uint16\+\_\+t rtr\+\_\+bgpsec\+::sigs\+\_\+len}



Count of Signature Segments (do not edit manually). 

\Hypertarget{group__mod__bgpsec__h_ga8e248012e7dbae61f22c3cd5c1c1b12a}\label{group__mod__bgpsec__h_ga8e248012e7dbae61f22c3cd5c1c1b12a} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!ski@{ski}}
\index{ski@{ski}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{ski}{ski}}
{\footnotesize\ttfamily uint8\+\_\+t rtr\+\_\+signature\+\_\+seg\+::ski\mbox{[}20\mbox{]}}

\Hypertarget{group__mod__bgpsec__h_gac8c9ef46ad63dfb79de8a4d45bf04e51}\label{group__mod__bgpsec__h_gac8c9ef46ad63dfb79de8a4d45bf04e51} 
\index{BGPsec AS path validation@{BGPsec AS path validation}!target\_as@{target\_as}}
\index{target\_as@{target\_as}!BGPsec AS path validation@{BGPsec AS path validation}}
\doxysubsubsubsection{\texorpdfstring{target\_as}{target\_as}}
{\footnotesize\ttfamily uint32\+\_\+t rtr\+\_\+bgpsec\+::target\+\_\+as}

