\hypertarget{ng__pipe_8h_source}{}\doxysection{ng\+\_\+pipe.\+h}
\label{ng__pipe_8h_source}\index{netgraph/ng\_pipe.h@{netgraph/ng\_pipe.h}}
\mbox{\hyperlink{ng__pipe_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00001}00001 \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00002}00002 \textcolor{comment}{ * SPDX-\/License-\/Identifier: BSD-\/2-\/Clause-\/FreeBSD}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00003}00003 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00004}00004 \textcolor{comment}{ * Copyright (c) 2004-\/2008 University of Zagreb}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00005}00005 \textcolor{comment}{ * Copyright (c) 2007-\/2008 FreeBSD Foundation}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00006}00006 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00007}00007 \textcolor{comment}{ * This software was developed by the University of Zagreb and the}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00008}00008 \textcolor{comment}{ * FreeBSD Foundation under sponsorship by the Stichting NLnet and the}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00009}00009 \textcolor{comment}{ * FreeBSD Foundation.}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00010}00010 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00011}00011 \textcolor{comment}{ * Redistribution and use in source and binary forms, with or without}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00012}00012 \textcolor{comment}{ * modification, are permitted provided that the following conditions}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00013}00013 \textcolor{comment}{ * are met:}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00014}00014 \textcolor{comment}{ * 1. Redistributions of source code must retain the above copyright}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00015}00015 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer.}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00016}00016 \textcolor{comment}{ * 2. Redistributions in binary form must reproduce the above copyright}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00017}00017 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer in the}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00018}00018 \textcolor{comment}{ *    documentation and/or other materials provided with the distribution.}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00019}00019 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00020}00020 \textcolor{comment}{ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00021}00021 \textcolor{comment}{ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00022}00022 \textcolor{comment}{ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00023}00023 \textcolor{comment}{ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00024}00024 \textcolor{comment}{ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00025}00025 \textcolor{comment}{ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00026}00026 \textcolor{comment}{ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00027}00027 \textcolor{comment}{ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00028}00028 \textcolor{comment}{ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00029}00029 \textcolor{comment}{ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00030}00030 \textcolor{comment}{ * SUCH DAMAGE.}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00031}00031 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00032}00032 \textcolor{comment}{ * \$FreeBSD\$}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00033}00033 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00034}00034 }
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00035}00035 \textcolor{preprocessor}{\#ifndef \_NETGRAPH\_PIPE\_H\_}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00036}00036 \textcolor{preprocessor}{\#define \_NETGRAPH\_PIPE\_H\_}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00037}00037 }
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00038}00038 \textcolor{comment}{/* Node type name and magic cookie */}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00039}\mbox{\hyperlink{ng__pipe_8h_a92d48646ed50e93e9afbcc9aa5b60fe8}{00039}} \textcolor{preprocessor}{\#define NG\_PIPE\_NODE\_TYPE       "{}pipe"{}}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00040}\mbox{\hyperlink{ng__pipe_8h_af5d0d95f20dade449baab60595a8ef9f}{00040}} \textcolor{preprocessor}{\#define NGM\_PIPE\_COOKIE         200708191}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00041}00041 }
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00042}00042 \textcolor{comment}{/* Hook names */}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00043}\mbox{\hyperlink{ng__pipe_8h_ab397d85c653cb96dce3b2364b0df3d2b}{00043}} \textcolor{preprocessor}{\#define NG\_PIPE\_HOOK\_UPPER      "{}upper"{}}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00044}\mbox{\hyperlink{ng__pipe_8h_a72e5a619e83777aa464b6b1bac3a22aa}{00044}} \textcolor{preprocessor}{\#define NG\_PIPE\_HOOK\_LOWER      "{}lower"{}}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00045}00045 }
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00046}\mbox{\hyperlink{ng__pipe_8h_ab197d02ee5b00f2a143e3a42369f8f2f}{00046}} \textcolor{preprocessor}{\#define MAX\_FSIZE 65536 }\textcolor{comment}{/* Largest supported frame size, in bytes, for BER */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00047}\mbox{\hyperlink{ng__pipe_8h_a33c19d826374db1359a18352fff3656e}{00047}} \textcolor{preprocessor}{\#define MAX\_OHSIZE 256  }\textcolor{comment}{/* Largest supported dummy-\/framing size, in bytes */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00048}00048 }
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00049}00049 \textcolor{comment}{/* Statistics structure for one hook */}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00050}\mbox{\hyperlink{structng__pipe__hookstat}{00050}} \textcolor{keyword}{struct }\mbox{\hyperlink{structng__pipe__hookstat}{ng\_pipe\_hookstat}} \{}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00051}\mbox{\hyperlink{structng__pipe__hookstat_a1f459b7fce4a051a49b2f251db81642f}{00051}}         u\_int64\_t               \mbox{\hyperlink{structng__pipe__hookstat_a1f459b7fce4a051a49b2f251db81642f}{fwd\_octets}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00052}\mbox{\hyperlink{structng__pipe__hookstat_aa5d7b833c27c6a38e985a9cdefed8efa}{00052}}         u\_int64\_t               \mbox{\hyperlink{structng__pipe__hookstat_aa5d7b833c27c6a38e985a9cdefed8efa}{fwd\_frames}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00053}\mbox{\hyperlink{structng__pipe__hookstat_a2f284e18504c76ddf1d4dddd1f4e1198}{00053}}         u\_int64\_t               \mbox{\hyperlink{structng__pipe__hookstat_a2f284e18504c76ddf1d4dddd1f4e1198}{in\_disc\_octets}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00054}\mbox{\hyperlink{structng__pipe__hookstat_a8f08a82a5a14e1891cd6002de1689ead}{00054}}         u\_int64\_t               \mbox{\hyperlink{structng__pipe__hookstat_a8f08a82a5a14e1891cd6002de1689ead}{in\_disc\_frames}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00055}\mbox{\hyperlink{structng__pipe__hookstat_a1c637a36cdf2723e4f9fce4e5d8f998f}{00055}}         u\_int64\_t               \mbox{\hyperlink{structng__pipe__hookstat_a1c637a36cdf2723e4f9fce4e5d8f998f}{out\_disc\_octets}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00056}\mbox{\hyperlink{structng__pipe__hookstat_a480df882448fd9cd23bf75dda2d09cbb}{00056}}         u\_int64\_t               \mbox{\hyperlink{structng__pipe__hookstat_a480df882448fd9cd23bf75dda2d09cbb}{out\_disc\_frames}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00057}00057 \};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00058}00058 }
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00059}00059 \textcolor{comment}{/* Keep this in sync with the above structure definition */}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00060}\mbox{\hyperlink{ng__pipe_8h_a78adaf570f51108d68748319d13c43ff}{00060}} \textcolor{preprocessor}{\#define NG\_PIPE\_HOOKSTAT\_INFO   \{                                       \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00061}00061 \textcolor{preprocessor}{        \{ "{}FwdOctets"{}},          \&ng\_parse\_uint64\_type   \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00062}00062         \{ "{}FwdFrames"{},          \&ng\_parse\_uint64\_type   \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00063}00063         \{ "{}queueDropOctets"{},    \&ng\_parse\_uint64\_type   \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00064}00064         \{ "{}queueDropFrames"{},    \&ng\_parse\_uint64\_type   \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00065}00065         \{ "{}delayDropOctets"{},    \&ng\_parse\_uint64\_type   \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00066}00066         \{ "{}delayDropFrames"{},    \&ng\_parse\_uint64\_type   \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00067}00067         \{ NULL \},                                                       \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00068}00068 \}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00069}00069 }
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00070}00070 \textcolor{comment}{/* Statistics structure returned by NGM\_PIPE\_GET\_STATS */}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00071}\mbox{\hyperlink{structng__pipe__stats}{00071}} \textcolor{keyword}{struct }\mbox{\hyperlink{structng__pipe__stats}{ng\_pipe\_stats}} \{}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00072}\mbox{\hyperlink{structng__pipe__stats_a9aa472251b587ef62b02da1fc7f21c3a}{00072}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structng__pipe__hookstat}{ng\_pipe\_hookstat}} \mbox{\hyperlink{structng__pipe__stats_a9aa472251b587ef62b02da1fc7f21c3a}{downstream}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00073}\mbox{\hyperlink{structng__pipe__stats_a3e267398629525d700d506eeb7797331}{00073}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structng__pipe__hookstat}{ng\_pipe\_hookstat}} \mbox{\hyperlink{structng__pipe__stats_a3e267398629525d700d506eeb7797331}{upstream}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00074}00074 \};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00075}00075 }
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00076}00076 \textcolor{comment}{/* Keep this in sync with the above structure definition */}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00077}\mbox{\hyperlink{ng__pipe_8h_ad2940596d0f7216873733e5f3356f647}{00077}} \textcolor{preprocessor}{\#define NG\_PIPE\_STATS\_INFO(hstype)      \{                               \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00078}00078 \textcolor{preprocessor}{        \{ "{}downstream"{}},         (hstype) \},                             \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00079}00079         \{ "{}upstream"{},           (hstype) \},                             \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00080}00080         \{ NULL \},                                                       \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00081}00081 \}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00082}00082 }
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00083}00083 \textcolor{comment}{/* Runtime structure for one hook */}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00084}\mbox{\hyperlink{structng__pipe__hookrun}{00084}} \textcolor{keyword}{struct }\mbox{\hyperlink{structng__pipe__hookrun}{ng\_pipe\_hookrun}} \{}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00085}\mbox{\hyperlink{structng__pipe__hookrun_ac0979c366f837b8cd8227fd152adbc1f}{00085}}         u\_int32\_t               \mbox{\hyperlink{structng__pipe__hookrun_ac0979c366f837b8cd8227fd152adbc1f}{fifo\_queues}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00086}\mbox{\hyperlink{structng__pipe__hookrun_aee9ac2ee2aa327faf9c2ac41ca11d9a6}{00086}}         u\_int32\_t               \mbox{\hyperlink{structng__pipe__hookrun_aee9ac2ee2aa327faf9c2ac41ca11d9a6}{qin\_octets}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00087}\mbox{\hyperlink{structng__pipe__hookrun_aa04191234a962c92f42adf4d2ff7947f}{00087}}         u\_int32\_t               \mbox{\hyperlink{structng__pipe__hookrun_aa04191234a962c92f42adf4d2ff7947f}{qin\_frames}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00088}\mbox{\hyperlink{structng__pipe__hookrun_a3ffb04ff1e74339ea6ac3e6921c222e6}{00088}}         u\_int32\_t               \mbox{\hyperlink{structng__pipe__hookrun_a3ffb04ff1e74339ea6ac3e6921c222e6}{qout\_octets}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00089}\mbox{\hyperlink{structng__pipe__hookrun_afc5c276cc51a55910fbc17b094011f6a}{00089}}         u\_int32\_t               \mbox{\hyperlink{structng__pipe__hookrun_afc5c276cc51a55910fbc17b094011f6a}{qout\_frames}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00090}00090 \};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00091}00091 }
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00092}00092 \textcolor{comment}{/* Keep this in sync with the above structure definition */}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00093}\mbox{\hyperlink{ng__pipe_8h_ac9c9b34e444f10284123abf668f9c67e}{00093}} \textcolor{preprocessor}{\#define NG\_PIPE\_HOOKRUN\_INFO    \{                                       \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00094}00094 \textcolor{preprocessor}{        \{ "{}queues"{}},             \&ng\_parse\_uint32\_type   \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00095}00095         \{ "{}queuedOctets"{},       \&ng\_parse\_uint32\_type   \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00096}00096         \{ "{}queuedFrames"{},       \&ng\_parse\_uint32\_type   \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00097}00097         \{ "{}delayedOctets"{},      \&ng\_parse\_uint32\_type   \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00098}00098         \{ "{}delayedFrames"{},      \&ng\_parse\_uint32\_type   \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00099}00099         \{ NULL \},                                                       \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00100}00100 \}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00101}00101 }
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00102}00102 \textcolor{comment}{/* Runtime structure returned by NGM\_PIPE\_GET\_RUN */}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00103}\mbox{\hyperlink{structng__pipe__run}{00103}} \textcolor{keyword}{struct }\mbox{\hyperlink{structng__pipe__run}{ng\_pipe\_run}} \{}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00104}\mbox{\hyperlink{structng__pipe__run_a6da322349c977dcc4fc2c2b8b1ef9abc}{00104}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structng__pipe__hookrun}{ng\_pipe\_hookrun}}   \mbox{\hyperlink{structng__pipe__run_a6da322349c977dcc4fc2c2b8b1ef9abc}{downstream}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00105}\mbox{\hyperlink{structng__pipe__run_a380c7ea3f513f07bc0f966167826011f}{00105}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structng__pipe__hookrun}{ng\_pipe\_hookrun}}   \mbox{\hyperlink{structng__pipe__run_a380c7ea3f513f07bc0f966167826011f}{upstream}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00106}00106 \};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00107}00107 }
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00108}00108 \textcolor{comment}{/* Keep this in sync with the above structure definition */}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00109}\mbox{\hyperlink{ng__pipe_8h_af323d836125e349c3062b02154448d51}{00109}} \textcolor{preprocessor}{\#define NG\_PIPE\_RUN\_INFO(hstype)        \{                               \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00110}00110 \textcolor{preprocessor}{        \{ "{}downstream"{}},         (hstype) \},                             \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00111}00111         \{ "{}upstream"{},           (hstype) \},                             \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00112}00112         \{ NULL \},                                                       \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00113}00113 \}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00114}00114 }
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00115}00115 \textcolor{comment}{/* Config structure for one hook */}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00116}\mbox{\hyperlink{structng__pipe__hookcfg}{00116}} \textcolor{keyword}{struct }\mbox{\hyperlink{structng__pipe__hookcfg}{ng\_pipe\_hookcfg}} \{}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00117}\mbox{\hyperlink{structng__pipe__hookcfg_a016101f07ea0c7f643003cb6f6f387ca}{00117}}         u\_int64\_t               \mbox{\hyperlink{structng__pipe__hookcfg_a016101f07ea0c7f643003cb6f6f387ca}{bandwidth}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00118}\mbox{\hyperlink{structng__pipe__hookcfg_a7768320c47f09528f9ca2d86db7f2f17}{00118}}         u\_int64\_t               \mbox{\hyperlink{structng__pipe__hookcfg_a7768320c47f09528f9ca2d86db7f2f17}{ber}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00119}\mbox{\hyperlink{structng__pipe__hookcfg_ac3b7da114215f4c299317f575ce0670c}{00119}}         u\_int32\_t               \mbox{\hyperlink{structng__pipe__hookcfg_ac3b7da114215f4c299317f575ce0670c}{qin\_size\_limit}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00120}\mbox{\hyperlink{structng__pipe__hookcfg_ae5fbb31ec3a6d24a677ca2db97c582a7}{00120}}         u\_int32\_t               \mbox{\hyperlink{structng__pipe__hookcfg_ae5fbb31ec3a6d24a677ca2db97c582a7}{qout\_size\_limit}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00121}\mbox{\hyperlink{structng__pipe__hookcfg_a8e075b9ee5a4f5f28eafcb2834bd5f3c}{00121}}         u\_int32\_t               \mbox{\hyperlink{structng__pipe__hookcfg_a8e075b9ee5a4f5f28eafcb2834bd5f3c}{duplicate}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00122}\mbox{\hyperlink{structng__pipe__hookcfg_a749eba818e7fad921ec576c6ff4dca71}{00122}}         u\_int32\_t               \mbox{\hyperlink{structng__pipe__hookcfg_a749eba818e7fad921ec576c6ff4dca71}{fifo}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00123}\mbox{\hyperlink{structng__pipe__hookcfg_a45725ac77713eb6781081b7872edac35}{00123}}         u\_int32\_t               \mbox{\hyperlink{structng__pipe__hookcfg_a45725ac77713eb6781081b7872edac35}{drr}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00124}\mbox{\hyperlink{structng__pipe__hookcfg_a488dc2a8eb8d28e54d343e2afcca1bdb}{00124}}         u\_int32\_t               \mbox{\hyperlink{structng__pipe__hookcfg_a488dc2a8eb8d28e54d343e2afcca1bdb}{wfq}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00125}\mbox{\hyperlink{structng__pipe__hookcfg_a15d42959a70b0f561db56462ce1e801b}{00125}}         u\_int32\_t               \mbox{\hyperlink{structng__pipe__hookcfg_a15d42959a70b0f561db56462ce1e801b}{droptail}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00126}\mbox{\hyperlink{structng__pipe__hookcfg_ab0d916d3ba92277e56be04032799fe29}{00126}}         u\_int32\_t               \mbox{\hyperlink{structng__pipe__hookcfg_ab0d916d3ba92277e56be04032799fe29}{drophead}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00127}00127 \};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00128}00128 }
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00129}00129 \textcolor{comment}{/* Keep this in sync with the above structure definition */}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00130}\mbox{\hyperlink{ng__pipe_8h_aa2f6eaf2e52fc3bb5f0da755cd2b68b8}{00130}} \textcolor{preprocessor}{\#define NG\_PIPE\_HOOKCFG\_INFO    \{                                       \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00131}00131 \textcolor{preprocessor}{        \{ "{}bandwidth"{}},          \&ng\_parse\_uint64\_type   \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00132}00132         \{ "{}BER"{},                \&ng\_parse\_uint64\_type   \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00133}00133         \{ "{}queuelen"{},           \&ng\_parse\_uint32\_type   \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00134}00134         \{ "{}delaylen"{},           \&ng\_parse\_uint32\_type   \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00135}00135         \{ "{}duplicate"{},          \&ng\_parse\_uint32\_type   \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00136}00136         \{ "{}fifo"{},               \&ng\_parse\_uint32\_type   \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00137}00137         \{ "{}drr"{},                \&ng\_parse\_uint32\_type   \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00138}00138         \{ "{}wfq"{},                \&ng\_parse\_uint32\_type   \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00139}00139         \{ "{}droptail"{},           \&ng\_parse\_uint32\_type   \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00140}00140         \{ "{}drophead"{},           \&ng\_parse\_uint32\_type   \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00141}00141         \{ NULL \},                                                       \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00142}00142 \}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00143}00143 }
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00144}00144 \textcolor{comment}{/* Config structure returned by NGM\_PIPE\_GET\_CFG */}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00145}\mbox{\hyperlink{structng__pipe__cfg}{00145}} \textcolor{keyword}{struct }\mbox{\hyperlink{structng__pipe__cfg}{ng\_pipe\_cfg}} \{}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00146}\mbox{\hyperlink{structng__pipe__cfg_a36b5c73c5e5ffe9262d201436a6dc113}{00146}}         u\_int64\_t               \mbox{\hyperlink{structng__pipe__cfg_a36b5c73c5e5ffe9262d201436a6dc113}{bandwidth}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00147}\mbox{\hyperlink{structng__pipe__cfg_a8661395155b7a1a9f7d8fe253c808927}{00147}}         u\_int64\_t               \mbox{\hyperlink{structng__pipe__cfg_a8661395155b7a1a9f7d8fe253c808927}{delay}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00148}\mbox{\hyperlink{structng__pipe__cfg_a3b6fae54bcce3d0640dc8355c7a13ec5}{00148}}         u\_int32\_t               \mbox{\hyperlink{structng__pipe__cfg_a3b6fae54bcce3d0640dc8355c7a13ec5}{header\_offset}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00149}\mbox{\hyperlink{structng__pipe__cfg_afae1431efbbf4a0db8e6cf27400cbb50}{00149}}         u\_int32\_t               \mbox{\hyperlink{structng__pipe__cfg_afae1431efbbf4a0db8e6cf27400cbb50}{overhead}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00150}\mbox{\hyperlink{structng__pipe__cfg_a509288143bc4f42a55805a4a801bbdd0}{00150}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structng__pipe__hookcfg}{ng\_pipe\_hookcfg}}   \mbox{\hyperlink{structng__pipe__cfg_a509288143bc4f42a55805a4a801bbdd0}{downstream}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00151}\mbox{\hyperlink{structng__pipe__cfg_a33bb316d0e64ed28641ce9d5112f3511}{00151}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structng__pipe__hookcfg}{ng\_pipe\_hookcfg}}   \mbox{\hyperlink{structng__pipe__cfg_a33bb316d0e64ed28641ce9d5112f3511}{upstream}};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00152}00152 \};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00153}00153 }
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00154}00154 \textcolor{comment}{/* Keep this in sync with the above structure definition */}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00155}\mbox{\hyperlink{ng__pipe_8h_ae33dd4bab12e2feca98f782b1b62eee5}{00155}} \textcolor{preprocessor}{\#define NG\_PIPE\_CFG\_INFO(hstype)        \{                               \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00156}00156 \textcolor{preprocessor}{        \{ "{}bandwidth"{}},          \&ng\_parse\_uint64\_type   \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00157}00157         \{ "{}delay"{},              \&ng\_parse\_uint64\_type   \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00158}00158         \{ "{}header\_offset"{},      \&ng\_parse\_uint32\_type   \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00159}00159         \{ "{}overhead"{},           \&ng\_parse\_uint32\_type   \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00160}00160         \{ "{}downstream"{},         (hstype)                \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00161}00161         \{ "{}upstream"{},           (hstype)                \},              \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00162}00162         \{ NULL \},                                                       \(\backslash\)}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00163}00163 \}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00164}00164 }
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00165}00165 \textcolor{comment}{/* Netgraph commands */}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00166}00166 \textcolor{keyword}{enum} \{}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00167}\mbox{\hyperlink{ng__pipe_8h_a900dca9b26de42491763226e12dcd47ba9e319913a6d11f6b0856c7d7a7ecfcca}{00167}}         \mbox{\hyperlink{ng__pipe_8h_a900dca9b26de42491763226e12dcd47ba9e319913a6d11f6b0856c7d7a7ecfcca}{NGM\_PIPE\_GET\_STATS}}=1,         \textcolor{comment}{/* get stats */}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00168}\mbox{\hyperlink{ng__pipe_8h_a900dca9b26de42491763226e12dcd47baa36d62d4f90ba268c016dd4bdce4e68d}{00168}}         \mbox{\hyperlink{ng__pipe_8h_a900dca9b26de42491763226e12dcd47baa36d62d4f90ba268c016dd4bdce4e68d}{NGM\_PIPE\_CLR\_STATS}},           \textcolor{comment}{/* clear stats */}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00169}\mbox{\hyperlink{ng__pipe_8h_a900dca9b26de42491763226e12dcd47baed069f18cf15b829820e383d00c674c7}{00169}}         \mbox{\hyperlink{ng__pipe_8h_a900dca9b26de42491763226e12dcd47baed069f18cf15b829820e383d00c674c7}{NGM\_PIPE\_GETCLR\_STATS}},             \textcolor{comment}{/* atomically get and clear stats */}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00170}\mbox{\hyperlink{ng__pipe_8h_a900dca9b26de42491763226e12dcd47bac2ec6d85813ca59886b50be264512e77}{00170}}         \mbox{\hyperlink{ng__pipe_8h_a900dca9b26de42491763226e12dcd47bac2ec6d85813ca59886b50be264512e77}{NGM\_PIPE\_GET\_RUN}},               \textcolor{comment}{/* get current runtime status */}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00171}\mbox{\hyperlink{ng__pipe_8h_a900dca9b26de42491763226e12dcd47ba6b3c6213b454ade3a34d56905c52b581}{00171}}         \mbox{\hyperlink{ng__pipe_8h_a900dca9b26de42491763226e12dcd47ba6b3c6213b454ade3a34d56905c52b581}{NGM\_PIPE\_GET\_CFG}},               \textcolor{comment}{/* get configurable parameters */}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00172}\mbox{\hyperlink{ng__pipe_8h_a900dca9b26de42491763226e12dcd47baa91e891e8729d04a885f2a561dbbd839}{00172}}         \mbox{\hyperlink{ng__pipe_8h_a900dca9b26de42491763226e12dcd47baa91e891e8729d04a885f2a561dbbd839}{NGM\_PIPE\_SET\_CFG}},               \textcolor{comment}{/* set configurable parameters */}}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00173}00173 \};}
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00174}00174 }
\DoxyCodeLine{\Hypertarget{ng__pipe_8h_source_l00175}00175 \textcolor{preprocessor}{\#endif }\textcolor{comment}{/* \_NETGRAPH\_PIPE\_H\_ */}\textcolor{preprocessor}{}}

\end{DoxyCode}
