[next] batman-adv: fix alignment for batadv_tvlv_tt_change
Commit Message
Make struct batadv_tvlv_tt_change 4 bytes long to avoid
padding on any architecture.
Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
---
packet.h | 4 ++--
translation-table.c | 6 ++++--
2 files changed, 6 insertions(+), 4 deletions(-)
Comments
On Sunday 15 December 2013 13:26:55 Antonio Quartulli wrote:
> Make struct batadv_tvlv_tt_change 4 bytes long to avoid
> padding on any architecture.
>
> Signed-off-by: Antonio Quartulli <antonio@meshcoding.com>
> ---
> packet.h | 4 ++--
> translation-table.c | 6 ++++--
> 2 files changed, 6 insertions(+), 4 deletions(-)
Applied in revision 6639da5.
Thanks,
Marek
@@ -484,13 +484,13 @@ struct batadv_tvlv_tt_vlan_data {
* struct batadv_tvlv_tt_change - translation table diff data
* @flags: status indicators concerning the non-mesh client (see
* batadv_tt_client_flags)
- * @reserved: reserved field
+ * @reserved: reserved field - useful for alignment purposes only
* @addr: mac address of non-mesh client that triggered this tt change
* @vid: VLAN identifier
*/
struct batadv_tvlv_tt_change {
uint8_t flags;
- uint8_t reserved;
+ uint8_t reserved[3];
uint8_t addr[ETH_ALEN];
__be16 vid;
};
@@ -333,7 +333,8 @@ static void batadv_tt_local_event(struct batadv_priv *bat_priv,
return;
tt_change_node->change.flags = flags;
- tt_change_node->change.reserved = 0;
+ memset(tt_change_node->change.reserved, 0,
+ sizeof(tt_change_node->change.reserved));
memcpy(tt_change_node->change.addr, common->addr, ETH_ALEN);
tt_change_node->change.vid = htons(common->vid);
@@ -2221,7 +2222,8 @@ static void batadv_tt_tvlv_generate(struct batadv_priv *bat_priv,
ETH_ALEN);
tt_change->flags = tt_common_entry->flags;
tt_change->vid = htons(tt_common_entry->vid);
- tt_change->reserved = 0;
+ memset(tt_change->reserved, 0,
+ sizeof(tt_change->reserved));
tt_num_entries++;
tt_change++;