\hypertarget{ng__bridge_8h_source}{}\doxysection{ng\+\_\+bridge.\+h}
\label{ng__bridge_8h_source}\index{netgraph/ng\_bridge.h@{netgraph/ng\_bridge.h}}
\mbox{\hyperlink{ng__bridge_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00001}00001 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00002}00002 \textcolor{comment}{ * ng\_bridge.h}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00003}00003 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00004}00004 }
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00005}00005 \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00006}00006 \textcolor{comment}{ * Copyright (c) 2000 Whistle Communications, Inc.}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00007}00007 \textcolor{comment}{ * All rights reserved.}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00008}00008 \textcolor{comment}{ * }}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00009}00009 \textcolor{comment}{ * Subject to the following obligations and disclaimer of warranty, use and}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00010}00010 \textcolor{comment}{ * redistribution of this software, in source or object code forms, with or}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00011}00011 \textcolor{comment}{ * without modifications are expressly permitted by Whistle Communications;}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00012}00012 \textcolor{comment}{ * provided, however, that:}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00013}00013 \textcolor{comment}{ * 1. Any and all reproductions of the source or object code must include the}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00014}00014 \textcolor{comment}{ *    copyright notice above and the following disclaimer of warranties; and}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00015}00015 \textcolor{comment}{ * 2. No rights are granted, in any manner or form, to use Whistle}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00016}00016 \textcolor{comment}{ *    Communications, Inc. trademarks, including the mark "{}WHISTLE}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00017}00017 \textcolor{comment}{ *    COMMUNICATIONS"{} on advertising, endorsements, or otherwise except as}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00018}00018 \textcolor{comment}{ *    such appears in the above copyright notice or in the software.}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00019}00019 \textcolor{comment}{ * }}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00020}00020 \textcolor{comment}{ * THIS SOFTWARE IS BEING PROVIDED BY WHISTLE COMMUNICATIONS "{}AS IS"{}, AND}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00021}00021 \textcolor{comment}{ * TO THE MAXIMUM EXTENT PERMITTED BY LAW, WHISTLE COMMUNICATIONS MAKES NO}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00022}00022 \textcolor{comment}{ * REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, REGARDING THIS SOFTWARE,}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00023}00023 \textcolor{comment}{ * INCLUDING WITHOUT LIMITATION, ANY AND ALL IMPLIED WARRANTIES OF}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00024}00024 \textcolor{comment}{ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-\/INFRINGEMENT.}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00025}00025 \textcolor{comment}{ * WHISTLE COMMUNICATIONS DOES NOT WARRANT, GUARANTEE, OR MAKE ANY}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00026}00026 \textcolor{comment}{ * REPRESENTATIONS REGARDING THE USE OF, OR THE RESULTS OF THE USE OF THIS}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00027}00027 \textcolor{comment}{ * SOFTWARE IN TERMS OF ITS CORRECTNESS, ACCURACY, RELIABILITY OR OTHERWISE.}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00028}00028 \textcolor{comment}{ * IN NO EVENT SHALL WHISTLE COMMUNICATIONS BE LIABLE FOR ANY DAMAGES}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00029}00029 \textcolor{comment}{ * RESULTING FROM OR ARISING OUT OF ANY USE OF THIS SOFTWARE, INCLUDING}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00030}00030 \textcolor{comment}{ * WITHOUT LIMITATION, ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00031}00031 \textcolor{comment}{ * PUNITIVE, OR CONSEQUENTIAL DAMAGES, PROCUREMENT OF SUBSTITUTE GOODS OR}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00032}00032 \textcolor{comment}{ * SERVICES, LOSS OF USE, DATA OR PROFITS, HOWEVER CAUSED AND UNDER ANY}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00033}00033 \textcolor{comment}{ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00034}00034 \textcolor{comment}{ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00035}00035 \textcolor{comment}{ * THIS SOFTWARE, EVEN IF WHISTLE COMMUNICATIONS IS ADVISED OF THE POSSIBILITY}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00036}00036 \textcolor{comment}{ * OF SUCH DAMAGE.}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00037}00037 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00038}00038 \textcolor{comment}{ * Author: Archie Cobbs <archie@freebsd.org>}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00039}00039 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00040}00040 \textcolor{comment}{ * \$FreeBSD\$}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00041}00041 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00042}00042 }
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00043}00043 \textcolor{preprocessor}{\#ifndef \_NETGRAPH\_NG\_BRIDGE\_H\_}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00044}00044 \textcolor{preprocessor}{\#define \_NETGRAPH\_NG\_BRIDGE\_H\_}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00045}00045 }
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00046}00046 \textcolor{comment}{/* Node type name and magic cookie */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00047}\mbox{\hyperlink{ng__bridge_8h_a1b7ea07715e66ba16dabf3b5f252612c}{00047}} \textcolor{preprocessor}{\#define NG\_BRIDGE\_NODE\_TYPE             "{}bridge"{}}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00048}\mbox{\hyperlink{ng__bridge_8h_ad6a3450d0a056115ca13430dc11f8207}{00048}} \textcolor{preprocessor}{\#define NGM\_BRIDGE\_COOKIE               1569321993}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00049}00049 }
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00050}00050 \textcolor{comment}{/* Hook names */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00051}\mbox{\hyperlink{ng__bridge_8h_ae6a25de6886c43461edc52658bd5e186}{00051}} \textcolor{preprocessor}{\#define NG\_BRIDGE\_HOOK\_LINK\_PREFIX      "{}link"{}}   \textcolor{comment}{/* append decimal integer */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00052}\mbox{\hyperlink{ng__bridge_8h_a9f93fad0f39b43a2b370e4079bf371be}{00052}} \textcolor{preprocessor}{\#define NG\_BRIDGE\_HOOK\_LINK\_FMT         "{}link\%d"{}} \textcolor{comment}{/* for use with printf(3) */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00053}\mbox{\hyperlink{ng__bridge_8h_a6f54e54b68b4d62bde53fc6db34490e1}{00053}} \textcolor{preprocessor}{\#define NG\_BRIDGE\_HOOK\_UPLINK\_PREFIX    "{}uplink"{}} \textcolor{comment}{/* append decimal integer */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00054}\mbox{\hyperlink{ng__bridge_8h_a0b06ede5f1b6a30cd146aca89dae5aa7}{00054}} \textcolor{preprocessor}{\#define NG\_BRIDGE\_HOOK\_UPLINK\_FMT       "{}uplink\%d"{}} \textcolor{comment}{/* for use with printf(3) */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00055}00055 }
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00056}00056 \textcolor{comment}{/* Node configuration structure */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00057}\mbox{\hyperlink{structng__bridge__config}{00057}} \textcolor{keyword}{struct }\mbox{\hyperlink{structng__bridge__config}{ng\_bridge\_config}} \{}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00058}\mbox{\hyperlink{structng__bridge__config_abd66d931df93d0b02e358ce7fd6a45af}{00058}}         u\_char          \mbox{\hyperlink{structng__bridge__config_abd66d931df93d0b02e358ce7fd6a45af}{debugLevel}};           \textcolor{comment}{/* debug level */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00059}\mbox{\hyperlink{structng__bridge__config_ae63f52f8dba4872aa9515c896aa2b3ff}{00059}}         u\_int32\_t       \mbox{\hyperlink{structng__bridge__config_ae63f52f8dba4872aa9515c896aa2b3ff}{loopTimeout}};         \textcolor{comment}{/* link loopback mute time */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00060}\mbox{\hyperlink{structng__bridge__config_a28ee4be8ee6c79b0e82f72fcd13ab20e}{00060}}         u\_int32\_t       \mbox{\hyperlink{structng__bridge__config_a28ee4be8ee6c79b0e82f72fcd13ab20e}{maxStaleness}};               \textcolor{comment}{/* max host age before nuking */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00061}\mbox{\hyperlink{structng__bridge__config_a3c5fc85094ede4efd0c3d6b1529baf14}{00061}}         u\_int32\_t       \mbox{\hyperlink{structng__bridge__config_a3c5fc85094ede4efd0c3d6b1529baf14}{minStableAge}};               \textcolor{comment}{/* min time for a stable host */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00062}00062 \};}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00063}00063 }
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00064}00064 \textcolor{comment}{/* Keep this in sync with the above structure definition */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00065}\mbox{\hyperlink{ng__bridge_8h_a5d3e3ee920b383e55054de7c1969d88b}{00065}} \textcolor{preprocessor}{\#define NG\_BRIDGE\_CONFIG\_TYPE\_INFO      \{                       \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00066}00066 \textcolor{preprocessor}{          \{ "{}debugLevel"{}},       \&ng\_parse\_uint8\_type    \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00067}00067           \{ "{}loopTimeout"{},      \&ng\_parse\_uint32\_type   \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00068}00068           \{ "{}maxStaleness"{},     \&ng\_parse\_uint32\_type   \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00069}00069           \{ "{}minStableAge"{},     \&ng\_parse\_uint32\_type   \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00070}00070           \{ NULL \}                                              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00071}00071 \}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00072}00072 }
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00073}00073 \textcolor{comment}{/* Statistics structure (one for each link) */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00074}\mbox{\hyperlink{structng__bridge__link__stats}{00074}} \textcolor{keyword}{struct }\mbox{\hyperlink{structng__bridge__link__stats}{ng\_bridge\_link\_stats}} \{}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00075}\mbox{\hyperlink{structng__bridge__link__stats_a777fa114d9689d4658ee008411a1666a}{00075}}         u\_int64\_t       \mbox{\hyperlink{structng__bridge__link__stats_a777fa114d9689d4658ee008411a1666a}{recvOctets}};   \textcolor{comment}{/* total octets rec'd on link */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00076}\mbox{\hyperlink{structng__bridge__link__stats_a730192ee52ceaadb3b8a965b1c55a8c2}{00076}}         u\_int64\_t       \mbox{\hyperlink{structng__bridge__link__stats_a730192ee52ceaadb3b8a965b1c55a8c2}{recvPackets}}; \textcolor{comment}{/* total pkts rec'd on link */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00077}\mbox{\hyperlink{structng__bridge__link__stats_aed5cb8fa5ed5eb5453ad1ebdaffdafd4}{00077}}         u\_int64\_t       \mbox{\hyperlink{structng__bridge__link__stats_aed5cb8fa5ed5eb5453ad1ebdaffdafd4}{recvMulticasts}};   \textcolor{comment}{/* multicast pkts rec'd on link */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00078}\mbox{\hyperlink{structng__bridge__link__stats_aa7eddba17f12d3b4f60d42ce6aadae84}{00078}}         u\_int64\_t       \mbox{\hyperlink{structng__bridge__link__stats_aa7eddba17f12d3b4f60d42ce6aadae84}{recvBroadcasts}};   \textcolor{comment}{/* broadcast pkts rec'd on link */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00079}\mbox{\hyperlink{structng__bridge__link__stats_ad602750e45faa9e187adcadfe4cb2cd5}{00079}}         u\_int64\_t       \mbox{\hyperlink{structng__bridge__link__stats_ad602750e45faa9e187adcadfe4cb2cd5}{recvUnknown}}; \textcolor{comment}{/* pkts rec'd with unknown dest addr */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00080}\mbox{\hyperlink{structng__bridge__link__stats_a63a2dc22189274429188fadaf1336cac}{00080}}         u\_int64\_t       \mbox{\hyperlink{structng__bridge__link__stats_a63a2dc22189274429188fadaf1336cac}{recvRunts}};     \textcolor{comment}{/* pkts rec'd less than 14 bytes */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00081}\mbox{\hyperlink{structng__bridge__link__stats_a7a59a578c6a3fa8c480e19fdebae2738}{00081}}         u\_int64\_t       \mbox{\hyperlink{structng__bridge__link__stats_a7a59a578c6a3fa8c480e19fdebae2738}{recvInvalid}}; \textcolor{comment}{/* pkts rec'd with bogus source addr */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00082}\mbox{\hyperlink{structng__bridge__link__stats_afca75dd1f2ea0e41449cdab04f31f63b}{00082}}         u\_int64\_t       \mbox{\hyperlink{structng__bridge__link__stats_afca75dd1f2ea0e41449cdab04f31f63b}{xmitOctets}};   \textcolor{comment}{/* total octets xmit'd on link */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00083}\mbox{\hyperlink{structng__bridge__link__stats_a06dc57e342a6968b1faee6904029fe1e}{00083}}         u\_int64\_t       \mbox{\hyperlink{structng__bridge__link__stats_a06dc57e342a6968b1faee6904029fe1e}{xmitPackets}}; \textcolor{comment}{/* total pkts xmit'd on link */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00084}\mbox{\hyperlink{structng__bridge__link__stats_ad574fc937a99a90dba656bc6313987c2}{00084}}         u\_int64\_t       \mbox{\hyperlink{structng__bridge__link__stats_ad574fc937a99a90dba656bc6313987c2}{xmitMulticasts}};   \textcolor{comment}{/* multicast pkts xmit'd on link */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00085}\mbox{\hyperlink{structng__bridge__link__stats_ae3decc21f3411f7a13df79c5aacc898d}{00085}}         u\_int64\_t       \mbox{\hyperlink{structng__bridge__link__stats_ae3decc21f3411f7a13df79c5aacc898d}{xmitBroadcasts}};   \textcolor{comment}{/* broadcast pkts xmit'd on link */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00086}\mbox{\hyperlink{structng__bridge__link__stats_a2f76fd04811622f3921f0cdfb8c8a03b}{00086}}         u\_int64\_t       \mbox{\hyperlink{structng__bridge__link__stats_a2f76fd04811622f3921f0cdfb8c8a03b}{loopDrops}};     \textcolor{comment}{/* pkts dropped due to loopback */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00087}\mbox{\hyperlink{structng__bridge__link__stats_afc3faec6ec377ff42136fae5b991fdf7}{00087}}         u\_int64\_t       \mbox{\hyperlink{structng__bridge__link__stats_afc3faec6ec377ff42136fae5b991fdf7}{loopDetects}}; \textcolor{comment}{/* number of loop detections */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00088}\mbox{\hyperlink{structng__bridge__link__stats_a450342e06520dc7a612e5777a5b6c131}{00088}}         u\_int64\_t       \mbox{\hyperlink{structng__bridge__link__stats_a450342e06520dc7a612e5777a5b6c131}{memoryFailures}};   \textcolor{comment}{/* times couldn't get mem or mbuf */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00089}00089 \};}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00090}00090 }
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00091}00091 \textcolor{comment}{/* Keep this in sync with the above structure definition */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00092}\mbox{\hyperlink{ng__bridge_8h_a10984d697449bae237646f26a0e27f65}{00092}} \textcolor{preprocessor}{\#define NG\_BRIDGE\_STATS\_TYPE\_INFO       \{                       \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00093}00093 \textcolor{preprocessor}{          \{ "{}recvOctets"{}},       \&ng\_parse\_uint64\_type   \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00094}00094           \{ "{}recvPackets"{},      \&ng\_parse\_uint64\_type   \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00095}00095           \{ "{}recvMulticast"{},    \&ng\_parse\_uint64\_type   \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00096}00096           \{ "{}recvBroadcast"{},    \&ng\_parse\_uint64\_type   \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00097}00097           \{ "{}recvUnknown"{},      \&ng\_parse\_uint64\_type   \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00098}00098           \{ "{}recvRunts"{},        \&ng\_parse\_uint64\_type   \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00099}00099           \{ "{}recvInvalid"{},      \&ng\_parse\_uint64\_type   \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00100}00100           \{ "{}xmitOctets"{},       \&ng\_parse\_uint64\_type   \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00101}00101           \{ "{}xmitPackets"{},      \&ng\_parse\_uint64\_type   \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00102}00102           \{ "{}xmitMulticasts"{},   \&ng\_parse\_uint64\_type   \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00103}00103           \{ "{}xmitBroadcasts"{},   \&ng\_parse\_uint64\_type   \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00104}00104           \{ "{}loopDrops"{},        \&ng\_parse\_uint64\_type   \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00105}00105           \{ "{}loopDetects"{},      \&ng\_parse\_uint64\_type   \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00106}00106           \{ "{}memoryFailures"{},   \&ng\_parse\_uint64\_type   \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00107}00107           \{ NULL \}                                              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00108}00108 \}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00109}00109 }
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00110}00110 \textcolor{keyword}{struct }\mbox{\hyperlink{structng__bridge__link}{ng\_bridge\_link}};}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00111}\mbox{\hyperlink{ng__bridge_8h_a13e810b855a15f3e7cdf197544c7fb4d}{00111}} \textcolor{keyword}{typedef} \textcolor{keyword}{struct }\mbox{\hyperlink{structng__bridge__link}{ng\_bridge\_link}} *\mbox{\hyperlink{ng__bridge_8h_a13e810b855a15f3e7cdf197544c7fb4d}{link\_p}};}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00112}00112 }
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00113}00113 \textcolor{comment}{/* external representation of the host */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00114}\mbox{\hyperlink{structng__bridge__hostent}{00114}} \textcolor{keyword}{struct }\mbox{\hyperlink{structng__bridge__hostent}{ng\_bridge\_hostent}} \{}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00115}\mbox{\hyperlink{structng__bridge__hostent_a184f90e0f1d1144bbef2bed59f5ddf33}{00115}}         u\_char          \mbox{\hyperlink{structng__bridge__hostent_a184f90e0f1d1144bbef2bed59f5ddf33}{addr}}[6];            \textcolor{comment}{/* ethernet address */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00116}\mbox{\hyperlink{structng__bridge__hostent_a08a145912a779ea4c3799138d1b1a402}{00116}}         \textcolor{keywordtype}{char}            \mbox{\hyperlink{structng__bridge__hostent_a08a145912a779ea4c3799138d1b1a402}{hook}}[\mbox{\hyperlink{ng__message_8h_a2fadb5752a5c456671b0aea53179c2dd}{NG\_HOOKSIZ}}]; \textcolor{comment}{/* link where addr can be found */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00117}\mbox{\hyperlink{structng__bridge__hostent_a7ec81d6e650fc626c8e3334d03ed09cd}{00117}}         u\_int16\_t       \mbox{\hyperlink{structng__bridge__hostent_a7ec81d6e650fc626c8e3334d03ed09cd}{age}};                 \textcolor{comment}{/* seconds ago entry was created */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00118}\mbox{\hyperlink{structng__bridge__hostent_a0c8f8b92dfa93173a68d92f437dd96b7}{00118}}         u\_int16\_t       \mbox{\hyperlink{structng__bridge__hostent_a0c8f8b92dfa93173a68d92f437dd96b7}{staleness}};             \textcolor{comment}{/* seconds ago host last heard from */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00119}00119 \};}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00120}00120 }
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00121}00121 \textcolor{comment}{/* Keep this in sync with the above structure definition */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00122}\mbox{\hyperlink{ng__bridge_8h_ae891a91cfaf9ce4e0544f81a244e15ca}{00122}} \textcolor{preprocessor}{\#define NG\_BRIDGE\_HOST\_TYPE\_INFO(entype)        \{               \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00123}00123 \textcolor{preprocessor}{          \{ "{}addr"{}},             (entype)                \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00124}00124           \{ "{}hook"{},             \&ng\_parse\_hookbuf\_type  \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00125}00125           \{ "{}age"{},              \&ng\_parse\_uint16\_type   \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00126}00126           \{ "{}staleness"{},        \&ng\_parse\_uint16\_type   \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00127}00127           \{ NULL \}                                              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00128}00128 \}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00129}00129 }
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00130}00130 \textcolor{comment}{/* Structure returned by NGM\_BRIDGE\_GET\_TABLE */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00131}\mbox{\hyperlink{structng__bridge__host__ary}{00131}} \textcolor{keyword}{struct }\mbox{\hyperlink{structng__bridge__host__ary}{ng\_bridge\_host\_ary}} \{}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00132}\mbox{\hyperlink{structng__bridge__host__ary_a4906da0bf8c1fac7d072c2289311d641}{00132}}         u\_int32\_t                       \mbox{\hyperlink{structng__bridge__host__ary_a4906da0bf8c1fac7d072c2289311d641}{numHosts}};}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00133}\mbox{\hyperlink{structng__bridge__host__ary_ab204558eaf8e441bd95cc35847c6ecdb}{00133}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structng__bridge__hostent}{ng\_bridge\_hostent}}       \mbox{\hyperlink{structng__bridge__host__ary_ab204558eaf8e441bd95cc35847c6ecdb}{hosts}}[];}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00134}00134 \};}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00135}00135 }
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00136}00136 \textcolor{comment}{/* Keep this in sync with the above structure definition */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00137}\mbox{\hyperlink{ng__bridge_8h_a25441507de702c1bd67e1bb42f3fa409}{00137}} \textcolor{preprocessor}{\#define NG\_BRIDGE\_HOST\_ARY\_TYPE\_INFO(harytype)  \{               \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00138}00138 \textcolor{preprocessor}{          \{ "{}numHosts"{}},         \&ng\_parse\_uint32\_type   \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00139}00139           \{ "{}hosts"{},            (harytype)              \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00140}00140           \{ NULL \}                                              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00141}00141 \}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00142}00142 }
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00143}\mbox{\hyperlink{structng__bridge__move__host}{00143}} \textcolor{keyword}{struct }\mbox{\hyperlink{structng__bridge__move__host}{ng\_bridge\_move\_host}} \{}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00144}\mbox{\hyperlink{structng__bridge__move__host_a73de6b8b362fb6abb07937fae53990f4}{00144}}         u\_char          \mbox{\hyperlink{structng__bridge__move__host_a73de6b8b362fb6abb07937fae53990f4}{addr}}[ETHER\_ADDR\_LEN];       \textcolor{comment}{/* ethernet address */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00145}\mbox{\hyperlink{structng__bridge__move__host_a66bd0742bc2d26165e62d4f32ce2c4ce}{00145}}         \textcolor{keywordtype}{char}            \mbox{\hyperlink{structng__bridge__move__host_a66bd0742bc2d26165e62d4f32ce2c4ce}{hook}}[\mbox{\hyperlink{ng__message_8h_a2fadb5752a5c456671b0aea53179c2dd}{NG\_HOOKSIZ}}]; \textcolor{comment}{/* link where addr can be found */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00146}00146 \};}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00147}00147 \textcolor{comment}{/* Keep this in sync with the above structure definition */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00148}\mbox{\hyperlink{ng__bridge_8h_ad52940d44797661c72aba15382daab08}{00148}} \textcolor{preprocessor}{\#define NG\_BRIDGE\_MOVE\_HOST\_TYPE\_INFO(entype)   \{               \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00149}00149 \textcolor{preprocessor}{          \{ "{}addr"{}},             (entype)                \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00150}00150           \{ "{}hook"{},             \&ng\_parse\_hookbuf\_type  \},      \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00151}00151 \}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00152}00152 }
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00153}00153 \textcolor{comment}{/* Netgraph control messages */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00154}00154 \textcolor{keyword}{enum} \{}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00155}\mbox{\hyperlink{ng__bridge_8h_aac34dfe6c6b73b43a4656c9dce041034af071a5e02b708842d8b8397f50407d32}{00155}}         \mbox{\hyperlink{ng__bridge_8h_aac34dfe6c6b73b43a4656c9dce041034af071a5e02b708842d8b8397f50407d32}{NGM\_BRIDGE\_SET\_CONFIG}} = 1, \textcolor{comment}{/* set node configuration */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00156}\mbox{\hyperlink{ng__bridge_8h_aac34dfe6c6b73b43a4656c9dce041034a2c4363a2bf8ace536f0a4d59fee07238}{00156}}         \mbox{\hyperlink{ng__bridge_8h_aac34dfe6c6b73b43a4656c9dce041034a2c4363a2bf8ace536f0a4d59fee07238}{NGM\_BRIDGE\_GET\_CONFIG}},             \textcolor{comment}{/* get node configuration */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00157}\mbox{\hyperlink{ng__bridge_8h_aac34dfe6c6b73b43a4656c9dce041034a353d8e7d41ff0e79481d8cf615697dc5}{00157}}         \mbox{\hyperlink{ng__bridge_8h_aac34dfe6c6b73b43a4656c9dce041034a353d8e7d41ff0e79481d8cf615697dc5}{NGM\_BRIDGE\_RESET}},               \textcolor{comment}{/* reset (forget) all information */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00158}\mbox{\hyperlink{ng__bridge_8h_aac34dfe6c6b73b43a4656c9dce041034a00b456f40c4168e2e28c9f0a63e84fc1}{00158}}         \mbox{\hyperlink{ng__bridge_8h_aac34dfe6c6b73b43a4656c9dce041034a00b456f40c4168e2e28c9f0a63e84fc1}{NGM\_BRIDGE\_GET\_STATS}},               \textcolor{comment}{/* get link stats */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00159}\mbox{\hyperlink{ng__bridge_8h_aac34dfe6c6b73b43a4656c9dce041034a5683c6b4ae659a6b5ba2afa8b17bc565}{00159}}         \mbox{\hyperlink{ng__bridge_8h_aac34dfe6c6b73b43a4656c9dce041034a5683c6b4ae659a6b5ba2afa8b17bc565}{NGM\_BRIDGE\_CLR\_STATS}},               \textcolor{comment}{/* clear link stats */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00160}\mbox{\hyperlink{ng__bridge_8h_aac34dfe6c6b73b43a4656c9dce041034a4356c3455e162ff6dee3cbe70db8c243}{00160}}         \mbox{\hyperlink{ng__bridge_8h_aac34dfe6c6b73b43a4656c9dce041034a4356c3455e162ff6dee3cbe70db8c243}{NGM\_BRIDGE\_GETCLR\_STATS}}, \textcolor{comment}{/* atomically get \& clear link stats */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00161}\mbox{\hyperlink{ng__bridge_8h_aac34dfe6c6b73b43a4656c9dce041034ad416bbef51400bf85fd3c0e8e9550aca}{00161}}         \mbox{\hyperlink{ng__bridge_8h_aac34dfe6c6b73b43a4656c9dce041034ad416bbef51400bf85fd3c0e8e9550aca}{NGM\_BRIDGE\_GET\_TABLE}},               \textcolor{comment}{/* get link table */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00162}\mbox{\hyperlink{ng__bridge_8h_aac34dfe6c6b73b43a4656c9dce041034a0898a5e13d7cb35cd007ec522a2ee4bf}{00162}}         \mbox{\hyperlink{ng__bridge_8h_aac34dfe6c6b73b43a4656c9dce041034a0898a5e13d7cb35cd007ec522a2ee4bf}{NGM\_BRIDGE\_SET\_PERSISTENT}},     \textcolor{comment}{/* set persistent mode */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00163}\mbox{\hyperlink{ng__bridge_8h_aac34dfe6c6b73b43a4656c9dce041034a14044a9dd82b26dc741f76de7235bc89}{00163}}         \mbox{\hyperlink{ng__bridge_8h_aac34dfe6c6b73b43a4656c9dce041034a14044a9dd82b26dc741f76de7235bc89}{NGM\_BRIDGE\_MOVE\_HOST}},               \textcolor{comment}{/* move a host to a link */}}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00164}00164 \};}
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00165}00165 }
\DoxyCodeLine{\Hypertarget{ng__bridge_8h_source_l00166}00166 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* \_NETGRAPH\_NG\_BRIDGE\_H\_ */}\textcolor{preprocessor}{}}

\end{DoxyCode}
