Global replace of Nicira Networks.
[sliver-openvswitch.git] / datapath / tunnel.c
index cdbf94a..c2133bb 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007-2012 Nicira Networks.
+ * Copyright (c) 2007-2012 Nicira, Inc.
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of version 2 of the GNU General Public
@@ -111,7 +111,7 @@ static unsigned int multicast_ports __read_mostly;
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)
 static struct hh_cache *rt_hh(struct rtable *rt)
 {
-       struct neighbour *neigh = dst_get_neighbour(&rt->dst);
+       struct neighbour *neigh = dst_get_neighbour_noref(&rt->dst);
        if (!neigh || !(neigh->nud_state & NUD_CONNECTED) ||
                        !neigh->hh.hh_len)
                return NULL;
@@ -1553,19 +1553,24 @@ int ovs_tnl_get_options(const struct vport *vport, struct sk_buff *skb)
        const struct tnl_vport *tnl_vport = tnl_vport_priv(vport);
        const struct tnl_mutable_config *mutable = rcu_dereference_rtnl(tnl_vport->mutable);
 
-       NLA_PUT_U32(skb, OVS_TUNNEL_ATTR_FLAGS, mutable->flags & TNL_F_PUBLIC);
-       NLA_PUT_BE32(skb, OVS_TUNNEL_ATTR_DST_IPV4, mutable->key.daddr);
-
-       if (!(mutable->flags & TNL_F_IN_KEY_MATCH))
-               NLA_PUT_BE64(skb, OVS_TUNNEL_ATTR_IN_KEY, mutable->key.in_key);
-       if (!(mutable->flags & TNL_F_OUT_KEY_ACTION))
-               NLA_PUT_BE64(skb, OVS_TUNNEL_ATTR_OUT_KEY, mutable->out_key);
-       if (mutable->key.saddr)
-               NLA_PUT_BE32(skb, OVS_TUNNEL_ATTR_SRC_IPV4, mutable->key.saddr);
-       if (mutable->tos)
-               NLA_PUT_U8(skb, OVS_TUNNEL_ATTR_TOS, mutable->tos);
-       if (mutable->ttl)
-               NLA_PUT_U8(skb, OVS_TUNNEL_ATTR_TTL, mutable->ttl);
+       if (nla_put_u32(skb, OVS_TUNNEL_ATTR_FLAGS,
+                     mutable->flags & TNL_F_PUBLIC) ||
+           nla_put_be32(skb, OVS_TUNNEL_ATTR_DST_IPV4, mutable->key.daddr))
+               goto nla_put_failure;
+
+       if (!(mutable->flags & TNL_F_IN_KEY_MATCH) &&
+           nla_put_be64(skb, OVS_TUNNEL_ATTR_IN_KEY, mutable->key.in_key))
+               goto nla_put_failure;
+       if (!(mutable->flags & TNL_F_OUT_KEY_ACTION) &&
+           nla_put_be64(skb, OVS_TUNNEL_ATTR_OUT_KEY, mutable->out_key))
+               goto nla_put_failure;
+       if (mutable->key.saddr &&
+           nla_put_be32(skb, OVS_TUNNEL_ATTR_SRC_IPV4, mutable->key.saddr))
+               goto nla_put_failure;
+       if (mutable->tos && nla_put_u8(skb, OVS_TUNNEL_ATTR_TOS, mutable->tos))
+               goto nla_put_failure;
+       if (mutable->ttl && nla_put_u8(skb, OVS_TUNNEL_ATTR_TTL, mutable->ttl))
+               goto nla_put_failure;
 
        return 0;