Vanetza
Loading...
Searching...
No Matches
repetition_dispatcher.hpp
1#ifndef REPETITION_DISPATCHER_HPP_GO4BAEVL
2#define REPETITION_DISPATCHER_HPP_GO4BAEVL
3
4#include <vanetza/geonet/router.hpp>
5#include <boost/variant/static_visitor.hpp>
6
7namespace vanetza
8{
9namespace geonet
10{
11
13{
14public:
15 RepetitionDispatcher(Router& _router, std::unique_ptr<DownPacket> _payload)
16 : router(_router), payload(std::move(_payload))
17 {}
18
19 template<class REQUEST>
20 void operator()(const REQUEST& request)
21 {
22 router.request(request, std::move(payload));
23 }
24
25private:
26 Router& router;
27 std::unique_ptr<DownPacket> payload;
28};
29
30} // namespace geonet
31} // namespace vanetza
32
33#endif /* REPETITION_DISPATCHER_HPP_GO4BAEVL */
ChunckPacket is a packet consisting of several memory chunks.
ByteBufferConvertible & operator[](OsiLayer ol)
ChunkPacket & merge(ChunkPacket &packet, OsiLayer from, OsiLayer to)
virtual void cancel(const void *scope)=0
virtual Clock::time_point now() const =0
const MacAddress & sender() const
const MacAddress & mac() const
Definition next_hop.cpp:27
void transmit(Packet &&packet, const MacAddress &destination)
Definition next_hop.cpp:43
void reset_beacon_timer(Clock::duration next)
Reschedule timer for next Beacon transmission.
Definition router.cpp:744
NextHop area_advanced_forwarding(PendingPacketForwarding &&, const LinkLayer *sender)
Determine next hop for area advanced forwarding See EN 302 636-4-1 v1.3.1 Annex F....
Definition router.cpp:884
void flush_broadcast_forwarding_buffer()
Send all packets in the broadcast forwarding buffer with expired waiting time.
Definition router.cpp:1262
void indicate_extended(IndicationContext &, const CommonHeader &)
Process ExtendedHeader at packet indication.
Definition router.cpp:520
bool detect_duplicate_packet(const Address &source, SequenceNumber sn)
Detect duplicate packets See EN 302 636-4-1 v1.3.1 Annex A.2.
Definition router.cpp:1291
void pass_down(const dcc::DataRequest &, PduPtr, DownPacketPtr)
Send packet using the information in the DataRequest. The packet is formed using the data in PDU and ...
Definition router.cpp:660
NextHop greedy_forwarding(PendingPacketForwarding &&)
Determine next hop for greedy forwarding. See EN 302 636-4-1 v1.3.1 Annex E.2.
Definition router.cpp:758
bool process_extended(const ExtendedPduConstRefs< ShbHeader > &, const UpPacket &, const LinkLayer &ll)
Process ExtendedHeader information. Update router's LocationTable and neighbour relationship....
Definition router.cpp:972
void pass_up(const DataIndication &, UpPacketPtr)
Pass packet up to the transport layer.
Definition router.cpp:696
units::Duration timeout_cbf(units::Length distance) const
Determine CBF buffering time for a packet. Complies to EN 302 636-4-1 v1.3.1 Annex E....
Definition router.cpp:856
void on_beacon_timer_expired()
Send Beacon packet to all neighbours with updated position vector. Only to be called when the beacon ...
Definition router.cpp:704
void indicate_common(IndicationContext &, const BasicHeader &)
Process CommonHeader at packet indication.
Definition router.cpp:418
DownPacketPtr encap_packet(ItsAid aid, ByteBuffer ssp, Pdu &pdu, DownPacketPtr packet)
Encaspulate a packet according to security profile.
Definition router.cpp:1339
bool decide_pass_up(bool within_destination, const GeoBroadcastHeader &gbc)
Decide if GBC packet shall be passed up to transport layer.
Definition router.cpp:1246
void set_access_interface(dcc::RequestInterface *ifc)
Register access layer interface.
Definition router.cpp:201
void set_random_seed(std::uint_fast32_t seed)
Set seed for internal random number generator (RNG) RNG is used e.g. for random Beacon jitter.
Definition router.cpp:218
units::Duration timeout_cbf(const MacAddress &sender) const
Determine (area) CBF buffering time for a packet from a sender.
Definition router.cpp:872
NextHop area_contention_based_forwarding(PendingPacketForwarding &&, const MacAddress *sender)
Determine next hop for area contention-based forwarding See EN 302 636-4-1 v1.3.1 Annex F....
Definition router.cpp:838
std::unique_ptr< ShbPdu > create_shb_pdu(const ShbDataRequest &)
Create an initialized Single-Hop-Broadcast PDU.
Definition router.cpp:1306
void flush_unicast_forwarding_buffer(const Address &addr)
Send all matching packets in the unicast forwarding buffer with expired waiting time.
Definition router.cpp:1267
void detect_duplicate_address(const Address &source, const MacAddress &sender)
Helper method to handle duplicate addresses. If own address collides with the address of a received p...
Definition router.cpp:1274
std::unique_ptr< BeaconPdu > create_beacon_pdu()
Create an initialzed Beacon PDU.
Definition router.cpp:1317
void indicate_basic(IndicationContextBasic &)
Process BasicHeader at packet indication.
Definition router.cpp:393
void set_dcc_field_generator(DccFieldGenerator *dcc)
Register generator for DCC-MCO fields.
Definition router.cpp:207
bool process_extended(const ExtendedPduConstRefs< TsbHeader > &, const UpPacket &, const LinkLayer &ll)
packet handling of received TSB packet
Definition router.cpp:1007
PacketDropReason
Reason for packet drop used by drop hook.
Definition router.hpp:85
DataConfirm request(const ShbDataRequest &, DownPacketPtr)
Request to send payload per single hop broadcast (SHB). If security is enabled, the message gets enca...
Definition router.cpp:223
void pass_down(const MacAddress &, PduPtr, DownPacketPtr)
Pass down the packet to the access layer.
Definition router.cpp:682
void dispatch_repetition(const DataRequestVariant &, DownPacketPtr)
Callback function for dispatching a packet repetition. Invoked by Repeater when a scheduled repetitio...
Definition router.cpp:752
NextHop non_area_contention_based_forwarding(PendingPacketForwarding &&, const MacAddress *sender)
Determine next hop for non-area contention-based forwarding See EN 302 636-4-1 v1....
Definition router.cpp:797
bool process_extended(const ExtendedPduConstRefs< GeoBroadcastHeader > &, const UpPacket &, const LinkLayer &ll)
Process ExtendedHeader information. Update router's LocationTable and neighbour relationship....
Definition router.cpp:1125
void indicate(UpPacketPtr, const MacAddress &sender, const MacAddress &destination)
Handle the received packet on network layer. Packet handling involves these steps:
Definition router.cpp:375
void set_transport_handler(UpperProtocol proto, TransportInterface *ifc)
Register a transport protocol handler.
Definition router.cpp:191
void reset_beacon_timer()
Reschedule timer for next Beacon transmission Timer will be scheduled according to MIB's Beacon timer...
Definition router.cpp:731
void update_position(const PositionFix &)
Update router's local position vector.
Definition router.cpp:171
void execute_media_procedures(CommunicationProfile)
Executes media specific functionalities Details are described in TS 102 636-4-2.
Definition router.cpp:639
void set_security_entity(security::SecurityEntity *entity)
Register security entity used when itsGnSecurity is enabled.
Definition router.cpp:196
std::unique_ptr< GbcPdu > create_gbc_pdu(const GbcDataRequest &)
Create an initialized GeoBroadcast PDU.
Definition router.cpp:1329
void set_address(const Address &)
Set Router's own GeoNetworking address.
Definition router.cpp:213
NextHop forwarding_algorithm_selection(PendingPacketForwarding &&, const LinkLayer *ll=nullptr)
Definition router.cpp:591
DataConfirm request(const GbcDataRequest &, DownPacketPtr)
Request to send payload per GeoBroadcast (GBC). If security is enabled, the message gets encapsulated...
Definition router.cpp:285
void execute_itsg5_procedures()
Executes ITS-G5 media specific procedures Details are described in TS 102 636-4-2.
Definition router.cpp:655
bool process_extended(const ExtendedPduConstRefs< BeaconHeader > &, const UpPacket &, const LinkLayer &ll)
Process ExtendedHeader information. Update router's LocationTable and neighbour relationship.
Definition router.cpp:1103
void indicate_secured(IndicationContextBasic &, const BasicHeader &)
Process SecuredMessage at packet indication.
Definition router.cpp:461
bool outside_sectorial_contention_area(const MacAddress &sender, const MacAddress &forwarder) const
Check if router is outside the sectorial contention area See TS 102 636-4-1 v1.2.3 section E....
Definition router.cpp:944
virtual EncapConfirm encapsulate_packet(EncapRequest &&request)=0
Creates a security envelope covering the given payload.
virtual DecapConfirm decapsulate_packet(DecapRequest &&request)=0
Decapsulates the payload within a SecuredMessage.
BasicHeader specified in ETSI EN 302 636-4-1 v1.2.1, section 8.6.