NAF Core Library
libnaf 0.6.0 API documentation

filter.h

Go to the documentation of this file.
00001 /*
00002  ** filter.h
00003  ** NAF flow filter support
00004  **
00005  ** ------------------------------------------------------------------------
00006  ** Copyright (C) 2005-2007 Carnegie Mellon University. All Rights Reserved.
00007  ** ------------------------------------------------------------------------
00008  ** Authors: Brian Trammell <bht@cert.org>
00009  ** ------------------------------------------------------------------------
00010  ** GNU General Public License (GPL) Rights pursuant to Version 2, June 1991
00011  ** Government Purpose License Rights (GPLR) pursuant to DFARS 252.225-7013
00012  ** ------------------------------------------------------------------------
00013  */
00014 
00023 /* idem hack */
00024 #ifndef _NAF_FILTER_H_
00025 #define _NAF_FILTER_H_
00026 
00027 #include <naf/autoinc.h>
00028 #include <naf/nafcore.h>
00029 #include <naf/lexcore.h>
00030 
00032 typedef struct _NAFilter {
00034     GArray                  *binrl;
00036     gboolean                sipnot;
00038     GArray                  *siprl;
00040     gboolean                dipnot;
00042     GArray                  *diprl;
00044     gboolean                spnot;
00046     GArray                  *sprl;
00048     gboolean                dpnot;
00050     GArray                  *dprl;
00052     gboolean                protonot;
00054     GArray                  *protorl;
00056     GArray                  *florl;
00058     GArray                  *rflorl;
00060     GArray                  *pktrl;
00062     GArray                  *rpktrl;
00064     GArray                  *octrl;
00066     GArray                  *roctrl;
00067 } NAFilter;
00068 
00070 #define naf_filter_active(_filter_) (((_filter_).binrl) || \
00071                                      ((_filter_).siprl) || \
00072                                      ((_filter_).diprl) || \
00073                                      ((_filter_).sprl) || \
00074                                      ((_filter_).dprl) || \
00075                                      ((_filter_).protorl) || \
00076                                      ((_filter_).florl) || \
00077                                      ((_filter_).rflorl) || \
00078                                      ((_filter_).pktrl) || \
00079                                      ((_filter_).rpktrl) || \
00080                                      ((_filter_).octrl) || \
00081                                      ((_filter_).roctrl))
00082 
00092 void naf_filter_rl_add(
00093     GArray                  **rl,
00094     uint32_t                a,
00095     uint32_t                b);
00096 
00105 gboolean naf_filter_rl_contains(
00106     GArray                  *rl,
00107     uint32_t                v);
00108 
00119 gboolean naf_filter_key(
00120     NAFilter                *filter,
00121     NAFlowKey               *key);
00122 
00133 gboolean naf_filter_val(
00134     NAFilter                *filter,
00135     NAFlowVal               *val);
00136 
00144 void naf_filter_init(
00145     NAFilter                *filter);
00146 
00154 void naf_filter_reinit(
00155     NAFilter                *filter);
00156 
00164 void naf_filter_rl_print(
00165     GArray                  *rl,
00166     GString                 *str);
00167 
00175 void naf_filter_rl_print_ipaddr(
00176     GArray                  *rl,
00177     GString                 *str);
00178 
00186 void naf_filter_print(
00187     NAFilter                *filter,
00188     GString                 *str);
00189 
00201 gboolean naf_filter_rl_parse_ipaddr(
00202     GScanner            *scanner,
00203     GArray              **rl);
00204 
00218 gboolean naf_filter_rl_parse_uint(
00219     GScanner            *scanner,
00220     GArray              **rl,
00221     uint32_t            max);
00222 
00235 gboolean naf_filter_parse(
00236     GScanner            *scanner,
00237     NAFilter            *filter);
00238 
00239 #endif