0c4061c0d0
Prepare TVLV infrastructure for more packet types, in particular the upcoming batman-adv multicast packet type. For that swap the OGM vs. unicast-tvlv packet boolean indicator to an explicit unsigned integer packet type variable. And provide the skb to a call to batadv_tvlv_containers_process(), as later the multicast packet's TVLV handler will need to have access not only to the TVLV but the full skb for forwarding. Forwarding will be invoked from the multicast packet's TVLVs' contents later. Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue> Signed-off-by: Sven Eckelmann <sven@narfation.org> Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
53 lines
1.8 KiB
C
53 lines
1.8 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/* Copyright (C) B.A.T.M.A.N. contributors:
|
|
*
|
|
* Marek Lindner, Simon Wunderlich
|
|
*/
|
|
|
|
#ifndef _NET_BATMAN_ADV_TVLV_H_
|
|
#define _NET_BATMAN_ADV_TVLV_H_
|
|
|
|
#include "main.h"
|
|
|
|
#include <linux/skbuff.h>
|
|
#include <linux/types.h>
|
|
#include <uapi/linux/batadv_packet.h>
|
|
|
|
void batadv_tvlv_container_register(struct batadv_priv *bat_priv,
|
|
u8 type, u8 version,
|
|
void *tvlv_value, u16 tvlv_value_len);
|
|
u16 batadv_tvlv_container_ogm_append(struct batadv_priv *bat_priv,
|
|
unsigned char **packet_buff,
|
|
int *packet_buff_len, int packet_min_len);
|
|
void batadv_tvlv_ogm_receive(struct batadv_priv *bat_priv,
|
|
struct batadv_ogm_packet *batadv_ogm_packet,
|
|
struct batadv_orig_node *orig_node);
|
|
void batadv_tvlv_container_unregister(struct batadv_priv *bat_priv,
|
|
u8 type, u8 version);
|
|
|
|
void batadv_tvlv_handler_register(struct batadv_priv *bat_priv,
|
|
void (*optr)(struct batadv_priv *bat_priv,
|
|
struct batadv_orig_node *orig,
|
|
u8 flags,
|
|
void *tvlv_value,
|
|
u16 tvlv_value_len),
|
|
int (*uptr)(struct batadv_priv *bat_priv,
|
|
u8 *src, u8 *dst,
|
|
void *tvlv_value,
|
|
u16 tvlv_value_len),
|
|
int (*mptr)(struct batadv_priv *bat_priv,
|
|
struct sk_buff *skb),
|
|
u8 type, u8 version, u8 flags);
|
|
void batadv_tvlv_handler_unregister(struct batadv_priv *bat_priv,
|
|
u8 type, u8 version);
|
|
int batadv_tvlv_containers_process(struct batadv_priv *bat_priv,
|
|
u8 packet_type,
|
|
struct batadv_orig_node *orig_node,
|
|
struct sk_buff *skb, void *tvlv_buff,
|
|
u16 tvlv_buff_len);
|
|
void batadv_tvlv_unicast_send(struct batadv_priv *bat_priv, const u8 *src,
|
|
const u8 *dst, u8 type, u8 version,
|
|
void *tvlv_value, u16 tvlv_value_len);
|
|
|
|
#endif /* _NET_BATMAN_ADV_TVLV_H_ */
|