@@ -653,6 +653,7 @@ AC_DEFUN([OVS_CHECK_LINUX_COMPAT], [
OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_postpush_rcsum])
OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [lco_csum])
OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_nfct])
+ OVS_GREP_IFELSE([$KSRC/include/linux/skbuff.h], [skb_put_zero])
OVS_GREP_IFELSE([$KSRC/include/linux/types.h], [bool],
[OVS_DEFINE([HAVE_BOOL_TYPE])])
@@ -420,7 +420,7 @@ static void pad_packet(struct datapath *dp, struct sk_buff *skb)
size_t plen = NLA_ALIGN(skb->len) - skb->len;
if (plen > 0)
- memset(skb_put(skb, plen), 0, plen);
+ skb_put_zero(skb, plen);
}
}
@@ -387,4 +387,16 @@ static inline struct nf_conntrack *skb_nfct(const struct sk_buff *skb)
#endif
}
#endif
+
+#ifndef HAVE_SKB_PUT_ZERO
+static inline void *skb_put_zero(struct sk_buff *skb, unsigned int len)
+{
+ void *tmp = skb_put(skb, len);
+
+ memset(tmp, 0, len);
+
+ return tmp;
+}
+#endif
+
#endif