Kea 2.7.0
pkt_filter_bpf.h
Go to the documentation of this file.
1// Copyright (C) 2014-2024 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
71 virtual bool isSocketReceivedTimeSupported() const {
72 return (true);
73 }
74
99 virtual SocketInfo openSocket(Iface& iface,
100 const isc::asiolink::IOAddress& addr,
101 const uint16_t port,
102 const bool receive_bcast,
103 const bool send_bcast);
104
111 virtual Pkt4Ptr receive(Iface& iface, const SocketInfo& socket_info);
112
120 virtual int send(const Iface& iface, uint16_t sockfd,
121 const Pkt4Ptr& pkt);
122
123private:
124
141 void writeAFPseudoHeader(const uint32_t address_family,
142 util::OutputBuffer& out_buf);
143
144};
145
146} // namespace isc::dhcp
147} // namespace isc
148
149#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 isSocketReceivedTimeSupported() const
Check if the socket received time is supported.
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:343
boost::shared_ptr< Pkt4 > Pkt4Ptr
A pointer to Pkt4 object.
Definition pkt4.h:555
Defines the logger used by the top-level component of kea-lfc.
Holds information about socket.
Definition socket_info.h:19