Imported Upstream version 3.2.2
[debian/gnuradio] / usrp2 / host / lib / pktfilter.h
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2005,2007,2008 Free Software Foundation, Inc.
4  *
5  * This program is free software: you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation, either version 3 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
17  */
18
19 #ifndef INCLUDED_USRP2_PKTFILTER_H
20 #define INCLUDED_USRP2_PKTFILTER_H
21
22 struct sock_filter;
23
24 namespace usrp2 {
25
26   /*
27    * \brief Compile programs for the Berkeley Packet Filter
28    */
29   class pktfilter {
30   public:
31     
32     unsigned             d_len;         // # of instructions
33     struct sock_filter  *d_inst;        // the instructions
34     
35     pktfilter ();
36     ~pktfilter ();
37     
38     /*!
39      * \brief Return a filter that harvests packets with the specified ethertype.
40      * \param ethertype the ethertype we're looking for.
41      */
42     static pktfilter *make_ethertype (unsigned short ethertype);
43     
44     /*!
45      * \brief Return a filter that harvests inbound packets with the specified ethertype.
46      * \param ethertype the ethertype we're looking for
47      * \param our_mac   our MAC address so we can avoid pkts we sent
48      */
49     static pktfilter *make_ethertype_inbound (unsigned short ethertype,
50                                               const unsigned char *our_mac);
51
52     /*!
53      * \brief Return a filter that harvests inbound packets with the specified ethertype
54      *        and source MAC address
55      * \param ethertype the ethertype we're looking for
56      * \param usrp_mac  the source MAC address
57      */
58     static pktfilter *make_ethertype_inbound_target (unsigned short ethertype,
59                                                      const unsigned char *usrp_mac); 
60   };
61   
62 } // namespace usrp2
63
64 #endif /* INCLUDED_USRP2_PKTFILTER_H */