|
@@ -215,6 +215,14 @@ static void xfrm6_update_pmtu(struct dst_entry *dst, u32 mtu)
|
|
|
path->ops->update_pmtu(path, mtu);
|
|
|
}
|
|
|
|
|
|
+static void xfrm6_redirect(struct dst_entry *dst, struct sk_buff *skb)
|
|
|
+{
|
|
|
+ struct xfrm_dst *xdst = (struct xfrm_dst *)dst;
|
|
|
+ struct dst_entry *path = xdst->route;
|
|
|
+
|
|
|
+ path->ops->redirect(path, skb);
|
|
|
+}
|
|
|
+
|
|
|
static void xfrm6_dst_destroy(struct dst_entry *dst)
|
|
|
{
|
|
|
struct xfrm_dst *xdst = (struct xfrm_dst *)dst;
|
|
@@ -261,6 +269,7 @@ static struct dst_ops xfrm6_dst_ops = {
|
|
|
.protocol = cpu_to_be16(ETH_P_IPV6),
|
|
|
.gc = xfrm6_garbage_collect,
|
|
|
.update_pmtu = xfrm6_update_pmtu,
|
|
|
+ .redirect = xfrm6_redirect,
|
|
|
.cow_metrics = dst_cow_metrics_generic,
|
|
|
.destroy = xfrm6_dst_destroy,
|
|
|
.ifdown = xfrm6_dst_ifdown,
|