batman-adv: refine API calls for unicast transmissions of SKBs
PATCH 1/1 batman-adv: refine API calls for unicast transmissions of SKBs
With this patch the functions batadv_send_skb_unicast() and batadv_send_skb_unicast_4addr() are further refined into batadv_send_skb_tt(), batadv_send_skb_tt_4addr() and batadv_send_skb_gw(). This way we avoid any guessing about where to send a packet in the unicast forwarding methods and let the callers decide.
This is going to be useful for the upcoming multicast related patches in particular.
--- distributed-arp-table.c | 7 ++-- send.c | 88 ++++++++++++++++++++++++++++++++++++++--------- send.h | 52 ++++++++++++++++++---------- soft-interface.c | 6 +++- 4 files changed, 112 insertions(+), 41 deletions(-)
distributed-arp-table.c +3 -4
@@ -1026,11 +1026,10 @@ bool batadv_dat_snoop_incoming_arp_request(struct batadv_priv *bat_priv,* that a node not using the 4addr packet format doesn't support it. */ if (hdr_size ==sizeof (struct batadv_unicast_4addr_packet )) - err =batadv_send_skb_unicast_4addr (bat_priv, skb_new, -BATADV_P_DAT_CACHE_REPLY , - vid); + err =batadv_send_skb_tt_4addr (bat_priv, skb_new, +BATADV_P_DAT_CACHE_REPLY , vid);else - err =batadv_send_skb_unicast (bat_priv, skb_new, vid); + err =batadv_send_skb_tt (bat_priv, skb_new, vid);if (!err) {batadv_inc_counter (bat_priv,BATADV_CNT_DAT_CACHED_REPLY_TX );
send.c +71 -17
113 lines not on this page · raw message
send.h +33 -19
78 lines not on this page · raw message
soft-interface.c +5 -1
@@ -289,7 +289,11 @@ static int batadv_interface_tx(struct sk_buff *skb,batadv_dat_snoop_outgoing_arp_reply (bat_priv, skb); - ret =batadv_send_skb_unicast (bat_priv, skb, vid); +if (is_multicast_ether_addr (ethhdr->h_dest)) + ret =batadv_send_skb_gw (bat_priv, skb, vid); +else + ret =batadv_send_skb_tt (bat_priv, skb, vid); +if (ret !=0 ) goto dropped_freed; }
Signature · 1 line
1.7.10.4
Quoted 2 lines · Linus Lüssing
+/**
+ *batadv_send_skb_generic_tt- send an skb to a translation table node
I don't really like the expression "translation table node"..it looks like we have different type of nodes...What about a simple"to a destination using the Translation Table" ? you can go on a new line with the short description, if needed.
Quoted 9 lines
+ * @bat_priv: the bat priv with all the soft interface information
+ * @skb: payload to send
+ * @packet_type: the batman unicast packet type to use
+ * @packet_subtype: the unicast 4addr packet subtype (only relevant for unicast
+ * 4addr packets)
+ * @vid: the vid to be used to search the translation table
+ *
+ * Look up the destination node for the destination address in the ethernet
+ * header via the translation table.
What about substituting "destination node" with "recipient node" to avoid repeating destination?
Quoted 6 lines
+ *
+ * Wrap the given skb into a batman-adv unicast or unicast-4addr header
+ * depending on whetherBATADV_UNICASTorBATADV_UNICAST_4ADDRwas supplied
+ * aspacket_type.
+ *
+ * Then send this frame to the according destination node.
Since the above is a list of steps performed by the function, I'd rather remove the blank lines you've added between the paragraphs.
[...]
Quoted 3 lines
/**
- *batadv_send_unicast_skb- send the skb encapsulated in a unicast packet
+ *batadv_send_skb_tt- send an skb to a translation table node
same as above
Quoted 7 lines
* @bat_priv: the bat priv with all the soft interface information
* @skb: the payload to send
* @vid: the vid to be used to search the translation table
*
+ * Look up the destination node for the destination address in the ethernet
+ * header via the translation table.
+ *
same as above
Quoted 4 lines
+ * Wrap the given skb into a batman-adv unicast header.
+ *
+ * Then send this frame to the according destination node.
+ *
same as above
Quoted 4 lines
/**
- *batadv_send_4addr_unicast_skb- send the skb encapsulated in a unicast 4addr
- * packet
+ *batadv_send_skb_tt_4addr- send an skb to a translation table node
same as above
Quoted 4 lines
* @bat_priv: the bat priv with all the soft interface information
* @skb: the payload to send
* @packet_subtype: the unicast 4addr packet subtype to use
* @vid: the vid to be used to search the translation table
Quoted 8 lines
*
+ * Look up the destination node for the destination address in the ethernet
+ * header via the translation table.
+ *
+ * Wrap the given skb into a batman-adv unicast-4addr header.
+ *
+ * Then send this frame to the according destination node.
+ *
same as above
Quoted 9 lines
* Returns 1 in case of error or 0 otherwise.
*/send.h +2
-4-static inline int batadv_send_skb_unicast_4addr (struct batadv_priv *bat_priv, -struct sk_buff *skb, -int packet_subtype, -unsigned short vid) +static inline int batadv_send_skb_tt_4addr(struct batadv_priv *bat_priv, + struct sk_buff *skb,
send.h bool batadv_send_skb_prepare_unicast_4addr(struct batadv_priv *bat_priv, · line 94
Quoted 10 lines
send.h +5
-3+int packet_subtype, + unsigned short vid) { -return batadv_send_skb_generic_unicast (bat_priv, skb, -BATADV_UNICAST_4ADDR , - packet_subtype, vid); + return batadv_send_skb_generic_tt(bat_priv, skb, +BATADV_UNICAST_4ADDR , +packet_subtype ,vid ); }
I like this new API :)
If you are ok with my suggestions then you can also add
Cheers,
Signature · 4 lines
Antonio Quartulli ..each of us alone is worth nothing.. Ernesto "Che" Guevara