Kea 2.2.0
pkt_filter_bpf.h
Go to the documentation of this file.
1// Copyright (C) 2014-2017 Internet Systems Consortium, Inc. ("ISC")
2//
3// This Source Code Form is subject to the terms of the Mozilla Public
4// License, v. 2.0. If a copy of the MPL was not distributed with this
5// file, You can obtain one at http://mozilla.org/MPL/2.0/.
6
7#ifndef PKT_FILTER_BPF_H
8#define PKT_FILTER_BPF_H
9
10#include <dhcp/pkt_filter.h>
11
12#include <util/buffer.h>
13
14namespace isc {
15namespace dhcp {
16
56class PktFilterBPF : public PktFilter {
57public:
58
64 virtual bool isDirectResponseSupported() const {
65 return (true);
66 }
67
92 virtual SocketInfo openSocket(Iface& iface,
93 const isc::asiolink::IOAddress& addr,
94 const uint16_t port,
95 const bool receive_bcast,
96 const bool send_bcast);
97
104 virtual Pkt4Ptr receive(Iface& iface, const SocketInfo& socket_info);
105
113 virtual int send(const Iface& iface, uint16_t sockfd,
114 const Pkt4Ptr& pkt);
115
116private:
117
134 void writeAFPseudoHeader(const uint32_t address_family,
135 util::OutputBuffer& out_buf);
136
137};
138
139} // namespace isc::dhcp
140} // namespace isc
141
142#endif // PKT_FILTER_BPF_H
Represents a single network interface.
Definition: iface_mgr.h:118
Packet handling class using Berkeley Packet Filtering (BPF)
virtual Pkt4Ptr receive(Iface &iface, const SocketInfo &socket_info)
Receive packet over specified socket.
virtual SocketInfo openSocket(Iface &iface, const isc::asiolink::IOAddress &addr, const uint16_t port, const bool receive_bcast, const bool send_bcast)
Open primary and fallback socket.
virtual int send(const Iface &iface, uint16_t sockfd, const Pkt4Ptr &pkt)
Send packet over specified socket.
virtual bool isDirectResponseSupported() const
Check if packet can be sent to the host without address directly.
Abstract packet handling class.
Definition: pkt_filter.h:44
The OutputBuffer class is a buffer abstraction for manipulating mutable data.
Definition: buffer.h:294
boost::shared_ptr< Pkt4 > Pkt4Ptr
A pointer to Pkt4 object.
Definition: pkt4.h:544
Defines the logger used by the top-level component of kea-lfc.
Holds information about socket.
Definition: socket_info.h:19