0d5eba7900
The f_ctx variable renamed in this change has a considerable variable span. This makes the code hard to read as the variable name is neither defined in the IEEE 802.15.4 standard nor can it be deduced from the variable name. Signed-off-by: Florian Grandel <fgrandel@code-for-humans.de>
67 lines
2.3 KiB
C
67 lines
2.3 KiB
C
/*
|
|
* Copyright (c) 2016 Intel Corporation
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
/**
|
|
* @file
|
|
* @brief 802.15.4 6LoWPAN adaptation layer
|
|
*
|
|
* This is not to be included by the application.
|
|
*/
|
|
|
|
#ifndef __NET_IEEE802154_6LO_H__
|
|
#define __NET_IEEE802154_6LO_H__
|
|
|
|
#include <zephyr/net/net_pkt.h>
|
|
#include <zephyr/types.h>
|
|
|
|
struct ieee802154_6lo_fragment_ctx {
|
|
struct net_buf *buf; /* current original fragment pointer */
|
|
uint8_t *pos; /* current position in buf */
|
|
uint16_t pkt_size; /* overall datagram size */
|
|
uint16_t processed; /* in bytes */
|
|
uint8_t hdr_diff; /* 6lo header size reduction due to compression in bytes */
|
|
uint8_t offset; /* in multiples of 8 bytes */
|
|
};
|
|
|
|
/**
|
|
* @brief Decode and reassemble 6LoWPAN packets to IPv6 as per RFC 6282
|
|
*
|
|
* @details Decompress and (if fragmented) reassemble 6LoWPAN packets for
|
|
* received over 802.15.4.
|
|
*
|
|
* @param iface A valid pointer on the network interface the package was
|
|
* received from
|
|
* @param pkt A valid pointer on a 6LoWPAN compressed packet to receive
|
|
*
|
|
* @return NET_CONTINUE decoding successful, pkt is decompressed
|
|
* NET_OK waiting for other fragments,
|
|
* NET_DROP invalid fragment.
|
|
*/
|
|
enum net_verdict ieee802154_6lo_decode_pkt(struct net_if *iface, struct net_pkt *pkt);
|
|
|
|
/**
|
|
* @brief Encode IPv6 packates to 6LoWPAN 802.15.4 as per RFC 6282
|
|
*
|
|
* @details Compress IPv6 packet for transmission over 802.15.4 and
|
|
* check whether additional fragmentation is needed.
|
|
*
|
|
* @param iface A valid pointer on the network interface the package is
|
|
* sent to
|
|
* @param pkt A valid pointer on a non-compressed IPv6 packet
|
|
* @param frag_ctx A valid pointer on a fragmentation context.
|
|
* @param ll_hdr_len required headroom for the LL header (after fragmentation)
|
|
* @param authtag_len required tailroom for the authentication tag in the frame (after
|
|
* fragmentation)
|
|
*
|
|
* @return 1 if additional 6LoWPAN fragmentation is needed, 0 if no
|
|
* fragmentation is needed, negative value on error
|
|
*/
|
|
int ieee802154_6lo_encode_pkt(struct net_if *iface, struct net_pkt *pkt,
|
|
struct ieee802154_6lo_fragment_ctx *frag_ctx, uint8_t ll_hdr_len,
|
|
uint8_t authtag_len);
|
|
|
|
#endif /* __NET_IEEE802154_6LO_H__ */
|