-
Notifications
You must be signed in to change notification settings - Fork 2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
squash: renamed and fixed generic header
- Loading branch information
1 parent
614f634
commit eacec1e
Showing
2 changed files
with
138 additions
and
120 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,138 @@ | ||
/* | ||
* Copyright (C) 2015 Freie Universität Berlin | ||
* | ||
* This file is subject to the terms and conditions of the GNU Lesser | ||
* General Public License v2.1. See the file LICENSE in the top level | ||
* directory for more details. | ||
*/ | ||
|
||
/** | ||
* @ingroup net | ||
* @{ | ||
* | ||
* @file | ||
* @brief Generic network interface header | ||
* | ||
* @author Hauke Petersen <hauke.petersen@fu-berlin.de> | ||
*/ | ||
|
||
#ifndef IFHDR_H_ | ||
#define IFHDR_H_ | ||
|
||
#include <string.h> | ||
#include <stdint.h> | ||
|
||
#include "kernel.h" | ||
|
||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
/** | ||
* @brief Generic network interface header | ||
* | ||
* The link layer addresses included in this header are put in memory directly | ||
* following this struct. | ||
*/ | ||
typedef struct __attribute__((packed)) { | ||
uint8_t src_l2addr_len; /**< length of l2 source address in byte */ | ||
uint8_t dst_l2addr_len; /**< length of l2 destination address in byte */ | ||
kernel_pid_t if_pid; /**< PID of network interface */ | ||
uint8_t rssi; /**< rssi of received packet (optional) */ | ||
uint8_t lqi; /**< lqi of received packet (optional) */ | ||
} ng_ifhdr_t; | ||
|
||
/** | ||
* @brief Initialize the given generic link layer header | ||
* | ||
* @param[in] hdr header to initialize | ||
* @param[in] src_addr_len link layer source address length | ||
* @param[in] dst_addr_len link layer destination address length | ||
*/ | ||
inline void ng_ifhdr_init(ng_ifhdr_t *hdr, uint8_t src_addr_len, | ||
uint8_t dst_addr_len) | ||
{ | ||
hdr->src_addr_len = src_addr_len; | ||
hdr->dst_addr_len = dst_addr_len; | ||
hdr->if_pid = KERNEL_PID_UNDEF; | ||
hdr->rssi = 0; | ||
hdr->lqi = 0; | ||
} | ||
|
||
/** | ||
* @brief Get the size of the given generic link layer header | ||
* | ||
* @param[in] hdr header to get the size of | ||
* | ||
* @return the size of the given header | ||
*/ | ||
inline size_t ng_ifhdr_sizeof(ng_ifhdr_t *hdr) | ||
{ | ||
return sizeof(ng_ifhdr_t) + hdr->src_addr_len + hdr->dst_addr_len; | ||
} | ||
|
||
/** | ||
* @brief Get the source address from the given header | ||
* | ||
* @param[in] hdr header to read from | ||
* | ||
* @return pointer to source address on success | ||
* @return NULL on error | ||
*/ | ||
inline uint8_t *ng_ifhdr_get_src_addr(ng_ifhdr_t *hdr) | ||
{ | ||
return ((uint8_t *)hdr) + sizeof(ng_ifhdr_t); | ||
} | ||
|
||
/** | ||
* @brief Set the source address in the given header | ||
* | ||
* @param[in] hdr header to write to | ||
* @param[in] addr new source address | ||
* @param[in] addr_len *addr* length | ||
*/ | ||
inline void ng_ifhdr_set_src_addr(ng_ifhdr_t *hdr, uint8_t *addr, | ||
uint8_t addr_len) | ||
{ | ||
if (addr_len != hdr->src_addr_len) { | ||
return; | ||
} | ||
memcpy(((uint8_t *)hdr) + sizeof(ng_ifhdr_t), addr, addr_len); | ||
} | ||
|
||
|
||
/** | ||
* @brief Get the destination address from the given header | ||
* | ||
* @param[in] hdr header to read from | ||
* | ||
* @return pointer to destination address on success | ||
* @return NULL on error | ||
*/ | ||
inline uint8_t *ng_ifhdr_get_dst_addr(ng_ifhdr_t *hdr) | ||
{ | ||
return ((uint8_t *)hdr) + sizeof(ng_ifhdr_t) + hdr->src_addr_len; | ||
} | ||
|
||
/** | ||
* @brief Set the destination address in the given header | ||
* | ||
* @param[in] hdr header to write to | ||
* @param[in] addr new destination address | ||
* @param[in] addr_len *addr* length | ||
*/ | ||
inline void ng_ifhdr_set_dst_addr(ng_ifhdr_t *hdr, uint8_t *addr, | ||
uint8_t addr_len) | ||
{ | ||
if (addr_len != hdr->dst_addr_len) { | ||
return; | ||
} | ||
memcpy(((uint8_t *)hdr) + sizeof(ng_ifhdr_t) + hdr->addr_len, addr, addr_len); | ||
} | ||
|
||
#ifdef __cplusplus | ||
} | ||
#endif | ||
|
||
#endif /* IFHDR_H_ */ | ||
/** @} */ |
This file was deleted.
Oops, something went wrong.