提交 d0b9fd89 编写于 作者: M Marek Lindner

batman-adv: move routing packet initialization into corresponding file

Signed-off-by: NMarek Lindner <lindner_marek@yahoo.de>
上级 fc957275
...@@ -30,6 +30,43 @@ ...@@ -30,6 +30,43 @@
#include "hard-interface.h" #include "hard-interface.h"
#include "send.h" #include "send.h"
void bat_ogm_init(struct hard_iface *hard_iface)
{
struct batman_ogm_packet *batman_ogm_packet;
hard_iface->packet_len = BATMAN_OGM_LEN;
hard_iface->packet_buff = kmalloc(hard_iface->packet_len, GFP_ATOMIC);
batman_ogm_packet = (struct batman_ogm_packet *)hard_iface->packet_buff;
batman_ogm_packet->packet_type = BAT_OGM;
batman_ogm_packet->version = COMPAT_VERSION;
batman_ogm_packet->flags = NO_FLAGS;
batman_ogm_packet->ttl = 2;
batman_ogm_packet->tq = TQ_MAX_VALUE;
batman_ogm_packet->tt_num_changes = 0;
batman_ogm_packet->ttvn = 0;
}
void bat_ogm_init_primary(struct hard_iface *hard_iface)
{
struct batman_ogm_packet *batman_ogm_packet;
batman_ogm_packet = (struct batman_ogm_packet *)hard_iface->packet_buff;
batman_ogm_packet->flags = PRIMARIES_FIRST_HOP;
batman_ogm_packet->ttl = TTL;
}
void bat_ogm_update_mac(struct hard_iface *hard_iface)
{
struct batman_ogm_packet *batman_ogm_packet;
batman_ogm_packet = (struct batman_ogm_packet *)hard_iface->packet_buff;
memcpy(batman_ogm_packet->orig,
hard_iface->net_dev->dev_addr, ETH_ALEN);
memcpy(batman_ogm_packet->prev_sender,
hard_iface->net_dev->dev_addr, ETH_ALEN);
}
/* is there another aggregated packet here? */ /* is there another aggregated packet here? */
static int bat_ogm_aggr_packet(int buff_pos, int packet_len, static int bat_ogm_aggr_packet(int buff_pos, int packet_len,
int tt_num_changes) int tt_num_changes)
......
...@@ -24,6 +24,9 @@ ...@@ -24,6 +24,9 @@
#include "main.h" #include "main.h"
void bat_ogm_init(struct hard_iface *hard_iface);
void bat_ogm_init_primary(struct hard_iface *hard_iface);
void bat_ogm_update_mac(struct hard_iface *hard_iface);
void bat_ogm_receive(const struct ethhdr *ethhdr, unsigned char *packet_buff, void bat_ogm_receive(const struct ethhdr *ethhdr, unsigned char *packet_buff,
int packet_len, struct hard_iface *if_incoming); int packet_len, struct hard_iface *if_incoming);
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include "bat_sysfs.h" #include "bat_sysfs.h"
#include "originator.h" #include "originator.h"
#include "hash.h" #include "hash.h"
#include "bat_ogm.h"
#include <linux/if_arp.h> #include <linux/if_arp.h>
...@@ -131,7 +132,6 @@ static void primary_if_select(struct bat_priv *bat_priv, ...@@ -131,7 +132,6 @@ static void primary_if_select(struct bat_priv *bat_priv,
struct hard_iface *new_hard_iface) struct hard_iface *new_hard_iface)
{ {
struct hard_iface *curr_hard_iface; struct hard_iface *curr_hard_iface;
struct batman_ogm_packet *batman_ogm_packet;
ASSERT_RTNL(); ASSERT_RTNL();
...@@ -147,11 +147,7 @@ static void primary_if_select(struct bat_priv *bat_priv, ...@@ -147,11 +147,7 @@ static void primary_if_select(struct bat_priv *bat_priv,
if (!new_hard_iface) if (!new_hard_iface)
return; return;
batman_ogm_packet = (struct batman_ogm_packet *) bat_ogm_init_primary(new_hard_iface);
(new_hard_iface->packet_buff);
batman_ogm_packet->flags = PRIMARIES_FIRST_HOP;
batman_ogm_packet->ttl = TTL;
primary_if_update_addr(bat_priv); primary_if_update_addr(bat_priv);
} }
...@@ -163,17 +159,6 @@ static bool hardif_is_iface_up(const struct hard_iface *hard_iface) ...@@ -163,17 +159,6 @@ static bool hardif_is_iface_up(const struct hard_iface *hard_iface)
return false; return false;
} }
static void update_mac_addresses(struct hard_iface *hard_iface)
{
struct batman_ogm_packet *batman_ogm_packet;
batman_ogm_packet = (struct batman_ogm_packet *)hard_iface->packet_buff;
memcpy(batman_ogm_packet->orig,
hard_iface->net_dev->dev_addr, ETH_ALEN);
memcpy(batman_ogm_packet->prev_sender,
hard_iface->net_dev->dev_addr, ETH_ALEN);
}
static void check_known_mac_addr(const struct net_device *net_dev) static void check_known_mac_addr(const struct net_device *net_dev)
{ {
const struct hard_iface *hard_iface; const struct hard_iface *hard_iface;
...@@ -248,7 +233,7 @@ static void hardif_activate_interface(struct hard_iface *hard_iface) ...@@ -248,7 +233,7 @@ static void hardif_activate_interface(struct hard_iface *hard_iface)
bat_priv = netdev_priv(hard_iface->soft_iface); bat_priv = netdev_priv(hard_iface->soft_iface);
update_mac_addresses(hard_iface); bat_ogm_update_mac(hard_iface);
hard_iface->if_status = IF_TO_BE_ACTIVATED; hard_iface->if_status = IF_TO_BE_ACTIVATED;
/** /**
...@@ -287,7 +272,6 @@ int hardif_enable_interface(struct hard_iface *hard_iface, ...@@ -287,7 +272,6 @@ int hardif_enable_interface(struct hard_iface *hard_iface,
const char *iface_name) const char *iface_name)
{ {
struct bat_priv *bat_priv; struct bat_priv *bat_priv;
struct batman_ogm_packet *batman_ogm_packet;
struct net_device *soft_iface; struct net_device *soft_iface;
int ret; int ret;
...@@ -322,8 +306,8 @@ int hardif_enable_interface(struct hard_iface *hard_iface, ...@@ -322,8 +306,8 @@ int hardif_enable_interface(struct hard_iface *hard_iface,
hard_iface->soft_iface = soft_iface; hard_iface->soft_iface = soft_iface;
bat_priv = netdev_priv(hard_iface->soft_iface); bat_priv = netdev_priv(hard_iface->soft_iface);
hard_iface->packet_len = BATMAN_OGM_LEN;
hard_iface->packet_buff = kmalloc(hard_iface->packet_len, GFP_ATOMIC); bat_ogm_init(hard_iface);
if (!hard_iface->packet_buff) { if (!hard_iface->packet_buff) {
bat_err(hard_iface->soft_iface, "Can't add interface packet " bat_err(hard_iface->soft_iface, "Can't add interface packet "
...@@ -332,16 +316,6 @@ int hardif_enable_interface(struct hard_iface *hard_iface, ...@@ -332,16 +316,6 @@ int hardif_enable_interface(struct hard_iface *hard_iface,
goto err; goto err;
} }
batman_ogm_packet = (struct batman_ogm_packet *)
(hard_iface->packet_buff);
batman_ogm_packet->packet_type = BAT_OGM;
batman_ogm_packet->version = COMPAT_VERSION;
batman_ogm_packet->flags = NO_FLAGS;
batman_ogm_packet->ttl = 2;
batman_ogm_packet->tq = TQ_MAX_VALUE;
batman_ogm_packet->tt_num_changes = 0;
batman_ogm_packet->ttvn = 0;
hard_iface->if_num = bat_priv->num_ifaces; hard_iface->if_num = bat_priv->num_ifaces;
bat_priv->num_ifaces++; bat_priv->num_ifaces++;
hard_iface->if_status = IF_INACTIVE; hard_iface->if_status = IF_INACTIVE;
...@@ -556,7 +530,7 @@ static int hard_if_event(struct notifier_block *this, ...@@ -556,7 +530,7 @@ static int hard_if_event(struct notifier_block *this,
goto hardif_put; goto hardif_put;
check_known_mac_addr(hard_iface->net_dev); check_known_mac_addr(hard_iface->net_dev);
update_mac_addresses(hard_iface); bat_ogm_update_mac(hard_iface);
bat_priv = netdev_priv(hard_iface->soft_iface); bat_priv = netdev_priv(hard_iface->soft_iface);
primary_if = primary_if_get_selected(bat_priv); primary_if = primary_if_get_selected(bat_priv);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册