[][openwrt][mt7988][tops][support L2TP/IPSec]
[Description]
Add support for L2TP/IPSec by implementing l2_update function.
Remove MAC address comparation in 'tnl_info_match', since it will not be
correct util l2_update is called in L2TP/IPSec scenario.
[Release-log]
N/A
Change-Id: I83f3bc1972fd4648c274f32747928319ede46845
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/7940616
diff --git a/package-21.02/kernel/tops/src/protocol/l2tp/udp_l2tp_data.c b/package-21.02/kernel/tops/src/protocol/l2tp/udp_l2tp_data.c
index e26dc62..592271d 100644
--- a/package-21.02/kernel/tops/src/protocol/l2tp/udp_l2tp_data.c
+++ b/package-21.02/kernel/tops/src/protocol/l2tp/udp_l2tp_data.c
@@ -235,6 +235,17 @@
return -EPERM; //TODO: not implemented
}
+static int udp_l2tp_data_tnl_l2_param_update(struct sk_buff *skb,
+ struct tops_tnl_params *tnl_params)
+{
+ struct ethhdr *eth = eth_hdr(skb);
+
+ memcpy(&tnl_params->saddr, eth->h_source, sizeof(u8) * ETH_ALEN);
+ memcpy(&tnl_params->daddr, eth->h_dest, sizeof(u8) * ETH_ALEN);
+
+ return 1;
+}
+
static bool udp_l2tp_data_tnl_info_match(struct tops_tnl_params *params1,
struct tops_tnl_params *params2)
{
@@ -243,9 +254,7 @@
&& params1->sport == params2->sport
&& params1->dport == params2->dport
&& params1->priv.l2tp.tid == params2->priv.l2tp.tid
- && params1->priv.l2tp.sid == params2->priv.l2tp.sid
- && !memcmp(params1->saddr, params2->saddr, sizeof(u8) * ETH_ALEN)
- && !memcmp(params1->daddr, params2->daddr, sizeof(u8) * ETH_ALEN))
+ && params1->priv.l2tp.sid == params2->priv.l2tp.sid)
return true;
return false;
@@ -297,6 +306,7 @@
.tnl_decap_param_setup = udp_l2tp_data_tnl_decap_param_setup,
.tnl_encap_param_setup = udp_l2tp_data_tnl_encap_param_setup,
.tnl_debug_param_setup = udp_l2tp_data_tnl_debug_param_setup,
+ .tnl_l2_param_update = udp_l2tp_data_tnl_l2_param_update,
.tnl_info_match = udp_l2tp_data_tnl_info_match,
.tnl_decap_offloadable = udp_l2tp_data_tnl_decap_offloadable,
.tops_entry = TOPS_ENTRY_UDP_L2TP_DATA,