Commit c7c6575f authored by David S. Miller's avatar David S. Miller

Merge branch 'batman-adv/next' of git://git.open-mesh.org/linux-merge

parents 0850f0f5 b5a1eeef
...@@ -200,15 +200,16 @@ abled during run time. Following log_levels are defined: ...@@ -200,15 +200,16 @@ abled during run time. Following log_levels are defined:
0 - All debug output disabled 0 - All debug output disabled
1 - Enable messages related to routing / flooding / broadcasting 1 - Enable messages related to routing / flooding / broadcasting
2 - Enable route or tt entry added / changed / deleted 2 - Enable messages related to route added / changed / deleted
3 - Enable all messages 4 - Enable messages related to translation table operations
7 - Enable all messages
The debug output can be changed at runtime using the file The debug output can be changed at runtime using the file
/sys/class/net/bat0/mesh/log_level. e.g. /sys/class/net/bat0/mesh/log_level. e.g.
# echo 2 > /sys/class/net/bat0/mesh/log_level # echo 2 > /sys/class/net/bat0/mesh/log_level
will enable debug messages for when routes or TTs change. will enable debug messages for when routes change.
BATCTL BATCTL
......
...@@ -695,7 +695,7 @@ bool gw_out_of_range(struct bat_priv *bat_priv, ...@@ -695,7 +695,7 @@ bool gw_out_of_range(struct bat_priv *bat_priv,
} }
neigh_old = find_router(bat_priv, orig_dst_node, NULL); neigh_old = find_router(bat_priv, orig_dst_node, NULL);
if (!!neigh_old) if (!neigh_old)
goto out; goto out;
if (curr_tq_avg - neigh_old->tq_avg > GW_THRESHOLD) if (curr_tq_avg - neigh_old->tq_avg > GW_THRESHOLD)
......
...@@ -136,10 +136,9 @@ static ssize_t bat_socket_read(struct file *file, char __user *buf, ...@@ -136,10 +136,9 @@ static ssize_t bat_socket_read(struct file *file, char __user *buf,
spin_unlock_bh(&socket_client->lock); spin_unlock_bh(&socket_client->lock);
error = __copy_to_user(buf, &socket_packet->icmp_packet, packet_len = min(count, socket_packet->icmp_len);
socket_packet->icmp_len); error = copy_to_user(buf, &socket_packet->icmp_packet, packet_len);
packet_len = socket_packet->icmp_len;
kfree(socket_packet); kfree(socket_packet);
if (error) if (error)
...@@ -187,12 +186,7 @@ static ssize_t bat_socket_write(struct file *file, const char __user *buff, ...@@ -187,12 +186,7 @@ static ssize_t bat_socket_write(struct file *file, const char __user *buff,
skb_reserve(skb, sizeof(struct ethhdr)); skb_reserve(skb, sizeof(struct ethhdr));
icmp_packet = (struct icmp_packet_rr *)skb_put(skb, packet_len); icmp_packet = (struct icmp_packet_rr *)skb_put(skb, packet_len);
if (!access_ok(VERIFY_READ, buff, packet_len)) { if (copy_from_user(icmp_packet, buff, packet_len)) {
len = -EFAULT;
goto free_skb;
}
if (__copy_from_user(icmp_packet, buff, packet_len)) {
len = -EFAULT; len = -EFAULT;
goto free_skb; goto free_skb;
} }
...@@ -217,7 +211,7 @@ static ssize_t bat_socket_write(struct file *file, const char __user *buff, ...@@ -217,7 +211,7 @@ static ssize_t bat_socket_write(struct file *file, const char __user *buff,
if (icmp_packet->version != COMPAT_VERSION) { if (icmp_packet->version != COMPAT_VERSION) {
icmp_packet->msg_type = PARAMETER_PROBLEM; icmp_packet->msg_type = PARAMETER_PROBLEM;
icmp_packet->ttl = COMPAT_VERSION; icmp_packet->version = COMPAT_VERSION;
bat_socket_add_packet(socket_client, icmp_packet, packet_len); bat_socket_add_packet(socket_client, icmp_packet, packet_len);
goto free_skb; goto free_skb;
} }
......
...@@ -627,8 +627,7 @@ int recv_tt_query(struct sk_buff *skb, struct hard_iface *recv_if) ...@@ -627,8 +627,7 @@ int recv_tt_query(struct sk_buff *skb, struct hard_iface *recv_if)
/* Ensure we have all the claimed data */ /* Ensure we have all the claimed data */
if (unlikely(skb_headlen(skb) < if (unlikely(skb_headlen(skb) <
sizeof(struct tt_query_packet) + sizeof(struct tt_query_packet) + tt_len))
tt_len))
goto out; goto out;
handle_tt_response(bat_priv, tt_query); handle_tt_response(bat_priv, tt_query);
......
...@@ -874,7 +874,7 @@ struct net_device *softif_create(const char *name) ...@@ -874,7 +874,7 @@ struct net_device *softif_create(const char *name)
unreg_sysfs: unreg_sysfs:
sysfs_del_meshif(soft_iface); sysfs_del_meshif(soft_iface);
unreg_soft_iface: unreg_soft_iface:
unregister_netdev(soft_iface); unregister_netdevice(soft_iface);
return NULL; return NULL;
free_soft_iface: free_soft_iface:
......
This diff is collapsed.
...@@ -222,24 +222,24 @@ struct socket_packet { ...@@ -222,24 +222,24 @@ struct socket_packet {
struct icmp_packet_rr icmp_packet; struct icmp_packet_rr icmp_packet;
}; };
struct tt_local_entry { struct tt_common_entry {
uint8_t addr[ETH_ALEN]; uint8_t addr[ETH_ALEN];
struct hlist_node hash_entry; struct hlist_node hash_entry;
unsigned long last_seen;
uint16_t flags; uint16_t flags;
atomic_t refcount; atomic_t refcount;
struct rcu_head rcu; struct rcu_head rcu;
}; };
struct tt_local_entry {
struct tt_common_entry common;
unsigned long last_seen;
};
struct tt_global_entry { struct tt_global_entry {
uint8_t addr[ETH_ALEN]; struct tt_common_entry common;
struct hlist_node hash_entry; /* entry in the global table */
struct orig_node *orig_node; struct orig_node *orig_node;
uint8_t ttvn; uint8_t ttvn;
uint16_t flags; /* only TT_GLOBAL_ROAM is used */
unsigned long roam_at; /* time at which TT_GLOBAL_ROAM was set */ unsigned long roam_at; /* time at which TT_GLOBAL_ROAM was set */
atomic_t refcount;
struct rcu_head rcu;
}; };
struct tt_change_node { struct tt_change_node {
......
...@@ -609,7 +609,7 @@ static int generate_vis_packet(struct bat_priv *bat_priv) ...@@ -609,7 +609,7 @@ static int generate_vis_packet(struct bat_priv *bat_priv)
struct vis_info *info = bat_priv->my_vis_info; struct vis_info *info = bat_priv->my_vis_info;
struct vis_packet *packet = (struct vis_packet *)info->skb_packet->data; struct vis_packet *packet = (struct vis_packet *)info->skb_packet->data;
struct vis_info_entry *entry; struct vis_info_entry *entry;
struct tt_local_entry *tt_local_entry; struct tt_common_entry *tt_common_entry;
int best_tq = -1; int best_tq = -1;
uint32_t i; uint32_t i;
...@@ -672,13 +672,13 @@ static int generate_vis_packet(struct bat_priv *bat_priv) ...@@ -672,13 +672,13 @@ static int generate_vis_packet(struct bat_priv *bat_priv)
head = &hash->table[i]; head = &hash->table[i];
rcu_read_lock(); rcu_read_lock();
hlist_for_each_entry_rcu(tt_local_entry, node, head, hlist_for_each_entry_rcu(tt_common_entry, node, head,
hash_entry) { hash_entry) {
entry = (struct vis_info_entry *) entry = (struct vis_info_entry *)
skb_put(info->skb_packet, skb_put(info->skb_packet,
sizeof(*entry)); sizeof(*entry));
memset(entry->src, 0, ETH_ALEN); memset(entry->src, 0, ETH_ALEN);
memcpy(entry->dest, tt_local_entry->addr, ETH_ALEN); memcpy(entry->dest, tt_common_entry->addr, ETH_ALEN);
entry->quality = 0; /* 0 means TT */ entry->quality = 0; /* 0 means TT */
packet->entries++; packet->entries++;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment