batadv_ogm_packet
#define BATADV_OGM_HLEN sizeof(struct batadv_ogm_packet)
batadv_ogm_packet->tq);
orig_ifinfo->last_ttl = batadv_ogm_packet->ttl;
neigh_ifinfo->last_ttl = batadv_ogm_packet->ttl;
struct batadv_ogm_packet *batadv_ogm_packet,
combined_tq = batadv_ogm_packet->tq *
batadv_ogm_packet->tq = combined_tq;
tq_iface_hop_penalty, batadv_ogm_packet->tq,
if (batadv_ogm_packet->tq >= BATADV_TQ_TOTAL_BIDRECT_LIMIT)
const struct batadv_ogm_packet *batadv_ogm_packet,
u32 seqno = ntohl(batadv_ogm_packet->seqno);
orig_node = batadv_iv_ogm_orig_get(bat_priv, batadv_ogm_packet->orig);
struct batadv_ogm_packet *ogm_packet;
ogm_packet = (struct batadv_ogm_packet *)(skb_priv->data + ogm_offset);
static void batadv_iv_ogm_process_reply(struct batadv_ogm_packet *ogm_packet,
struct batadv_ogm_packet *ogm_packet;
ogm_packet = (struct batadv_ogm_packet *)(skb->data + ogm_offset);
struct batadv_ogm_packet *ogm_packet;
ogm_packet = (struct batadv_ogm_packet *)skb->data;
ogm_packet = (struct batadv_ogm_packet *)packet_pos;
struct batadv_ogm_packet *batadv_ogm_packet;
batadv_ogm_packet = (struct batadv_ogm_packet *)ogm_buff;
batadv_ogm_packet->packet_type = BATADV_IV_OGM;
batadv_ogm_packet->version = BATADV_COMPAT_VERSION;
batadv_ogm_packet->ttl = 2;
batadv_ogm_packet->flags = BATADV_NO_FLAGS;
batadv_ogm_packet->reserved = 0;
batadv_ogm_packet->tq = BATADV_TQ_MAX_VALUE;
struct batadv_ogm_packet *batadv_ogm_packet;
batadv_ogm_packet = ogm_buff;
ether_addr_copy(batadv_ogm_packet->orig,
ether_addr_copy(batadv_ogm_packet->prev_sender,
struct batadv_ogm_packet *batadv_ogm_packet;
batadv_ogm_packet = ogm_buff;
batadv_ogm_packet->ttl = BATADV_TTL;
const struct batadv_ogm_packet *ogm_packet)
struct batadv_ogm_packet *batadv_ogm_packet;
batadv_ogm_packet = (struct batadv_ogm_packet *)packet_pos;
batadv_ogm_packet)) {
batadv_ogm_packet->flags |= BATADV_DIRECTLINK;
batadv_ogm_packet->flags &= ~BATADV_DIRECTLINK;
batadv_ogm_packet->orig,
ntohl(batadv_ogm_packet->seqno),
batadv_ogm_packet->tq, batadv_ogm_packet->ttl,
str_on_off(batadv_ogm_packet->flags & BATADV_DIRECTLINK),
buff_pos += ntohs(batadv_ogm_packet->tvlv_len);
batadv_ogm_packet = (struct batadv_ogm_packet *)packet_pos;
batadv_iv_ogm_can_aggregate(const struct batadv_ogm_packet *new_bat_ogm_packet,
struct batadv_ogm_packet *batadv_ogm_packet;
batadv_ogm_packet = (struct batadv_ogm_packet *)forw_packet->skb->data;
!(batadv_ogm_packet->flags & BATADV_DIRECTLINK) &&
batadv_ogm_packet->ttl != 1 &&
(batadv_ogm_packet->flags & BATADV_DIRECTLINK ||
struct batadv_ogm_packet *batadv_ogm_packet;
batadv_ogm_packet = (struct batadv_ogm_packet *)packet_buff;
direct_link = !!(batadv_ogm_packet->flags & BATADV_DIRECTLINK);
if (batadv_iv_ogm_can_aggregate(batadv_ogm_packet,
struct batadv_ogm_packet *batadv_ogm_packet,
if (batadv_ogm_packet->ttl <= 1) {
batadv_ogm_packet->flags |= BATADV_NOT_BEST_NEXT_HOP;
tvlv_len = ntohs(batadv_ogm_packet->tvlv_len);
batadv_ogm_packet->ttl--;
ether_addr_copy(batadv_ogm_packet->prev_sender, ethhdr->h_source);
batadv_ogm_packet->tq = batadv_hop_penalty(batadv_ogm_packet->tq,
batadv_ogm_packet->tq, batadv_ogm_packet->ttl);
batadv_ogm_packet->flags |= BATADV_DIRECTLINK;
batadv_ogm_packet->flags &= ~BATADV_DIRECTLINK;
batadv_iv_ogm_queue_add(bat_priv, (unsigned char *)batadv_ogm_packet,
struct batadv_ogm_packet *batadv_ogm_packet;
batadv_ogm_packet = (struct batadv_ogm_packet *)(*ogm_buff);
batadv_ogm_packet->tvlv_len = htons(tvlv_len);
batadv_ogm_packet->seqno = htonl(seqno);
const struct batadv_ogm_packet *batadv_ogm_packet,
struct batadv_ogm_packet *batadv_ogm_packet;
batadv_ogm_packet = (struct batadv_ogm_packet *)skb->data;
if (batadv_ogm_packet->version != BATADV_COMPAT_VERSION) {
batadv_ogm_packet->version);
idx = batadv_ogm_packet->packet_type;
BUILD_BUG_ON(sizeof(struct batadv_ogm_packet) != 24);
struct batadv_ogm_packet *batadv_ogm_packet,
if (!batadv_ogm_packet)
tvlv_value_len = ntohs(batadv_ogm_packet->tvlv_len);
tvlv_value = batadv_ogm_packet + 1;
struct batadv_ogm_packet *batadv_ogm_packet,