geneve: use network byte order for destination port config parameter
This is primarily for consistancy with vxlan and other tunnels which use network byte order for similar parameters. Signed-off-by: John W. Linville <linville@tuxdriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
41b976414c
commit
7bbe33ff18
@@ -815,7 +815,7 @@ static struct geneve_dev *geneve_find_dev(struct geneve_net *gn,
|
|||||||
|
|
||||||
static int geneve_configure(struct net *net, struct net_device *dev,
|
static int geneve_configure(struct net *net, struct net_device *dev,
|
||||||
__be32 rem_addr, __u32 vni, __u8 ttl, __u8 tos,
|
__be32 rem_addr, __u32 vni, __u8 ttl, __u8 tos,
|
||||||
__u16 dst_port, bool metadata)
|
__be16 dst_port, bool metadata)
|
||||||
{
|
{
|
||||||
struct geneve_net *gn = net_generic(net, geneve_net_id);
|
struct geneve_net *gn = net_generic(net, geneve_net_id);
|
||||||
struct geneve_dev *t, *geneve = netdev_priv(dev);
|
struct geneve_dev *t, *geneve = netdev_priv(dev);
|
||||||
@@ -840,10 +840,10 @@ static int geneve_configure(struct net *net, struct net_device *dev,
|
|||||||
|
|
||||||
geneve->ttl = ttl;
|
geneve->ttl = ttl;
|
||||||
geneve->tos = tos;
|
geneve->tos = tos;
|
||||||
geneve->dst_port = htons(dst_port);
|
geneve->dst_port = dst_port;
|
||||||
geneve->collect_md = metadata;
|
geneve->collect_md = metadata;
|
||||||
|
|
||||||
t = geneve_find_dev(gn, htons(dst_port), rem_addr, geneve->vni,
|
t = geneve_find_dev(gn, dst_port, rem_addr, geneve->vni,
|
||||||
&tun_on_same_port, &tun_collect_md);
|
&tun_on_same_port, &tun_collect_md);
|
||||||
if (t)
|
if (t)
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
@@ -867,7 +867,7 @@ static int geneve_configure(struct net *net, struct net_device *dev,
|
|||||||
static int geneve_newlink(struct net *net, struct net_device *dev,
|
static int geneve_newlink(struct net *net, struct net_device *dev,
|
||||||
struct nlattr *tb[], struct nlattr *data[])
|
struct nlattr *tb[], struct nlattr *data[])
|
||||||
{
|
{
|
||||||
__u16 dst_port = GENEVE_UDP_PORT;
|
__be16 dst_port = htons(GENEVE_UDP_PORT);
|
||||||
__u8 ttl = 0, tos = 0;
|
__u8 ttl = 0, tos = 0;
|
||||||
bool metadata = false;
|
bool metadata = false;
|
||||||
__be32 rem_addr;
|
__be32 rem_addr;
|
||||||
@@ -886,7 +886,7 @@ static int geneve_newlink(struct net *net, struct net_device *dev,
|
|||||||
tos = nla_get_u8(data[IFLA_GENEVE_TOS]);
|
tos = nla_get_u8(data[IFLA_GENEVE_TOS]);
|
||||||
|
|
||||||
if (data[IFLA_GENEVE_PORT])
|
if (data[IFLA_GENEVE_PORT])
|
||||||
dst_port = nla_get_u16(data[IFLA_GENEVE_PORT]);
|
dst_port = nla_get_be16(data[IFLA_GENEVE_PORT]);
|
||||||
|
|
||||||
if (data[IFLA_GENEVE_COLLECT_METADATA])
|
if (data[IFLA_GENEVE_COLLECT_METADATA])
|
||||||
metadata = true;
|
metadata = true;
|
||||||
@@ -909,7 +909,7 @@ static size_t geneve_get_size(const struct net_device *dev)
|
|||||||
nla_total_size(sizeof(struct in_addr)) + /* IFLA_GENEVE_REMOTE */
|
nla_total_size(sizeof(struct in_addr)) + /* IFLA_GENEVE_REMOTE */
|
||||||
nla_total_size(sizeof(__u8)) + /* IFLA_GENEVE_TTL */
|
nla_total_size(sizeof(__u8)) + /* IFLA_GENEVE_TTL */
|
||||||
nla_total_size(sizeof(__u8)) + /* IFLA_GENEVE_TOS */
|
nla_total_size(sizeof(__u8)) + /* IFLA_GENEVE_TOS */
|
||||||
nla_total_size(sizeof(__u16)) + /* IFLA_GENEVE_PORT */
|
nla_total_size(sizeof(__be16)) + /* IFLA_GENEVE_PORT */
|
||||||
nla_total_size(0) + /* IFLA_GENEVE_COLLECT_METADATA */
|
nla_total_size(0) + /* IFLA_GENEVE_COLLECT_METADATA */
|
||||||
0;
|
0;
|
||||||
}
|
}
|
||||||
@@ -931,7 +931,7 @@ static int geneve_fill_info(struct sk_buff *skb, const struct net_device *dev)
|
|||||||
nla_put_u8(skb, IFLA_GENEVE_TOS, geneve->tos))
|
nla_put_u8(skb, IFLA_GENEVE_TOS, geneve->tos))
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
|
|
||||||
if (nla_put_u16(skb, IFLA_GENEVE_PORT, ntohs(geneve->dst_port)))
|
if (nla_put_be16(skb, IFLA_GENEVE_PORT, geneve->dst_port))
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
|
|
||||||
if (geneve->collect_md) {
|
if (geneve->collect_md) {
|
||||||
@@ -971,7 +971,7 @@ struct net_device *geneve_dev_create_fb(struct net *net, const char *name,
|
|||||||
if (IS_ERR(dev))
|
if (IS_ERR(dev))
|
||||||
return dev;
|
return dev;
|
||||||
|
|
||||||
err = geneve_configure(net, dev, 0, 0, 0, 0, dst_port, true);
|
err = geneve_configure(net, dev, 0, 0, 0, 0, htons(dst_port), true);
|
||||||
if (err) {
|
if (err) {
|
||||||
free_netdev(dev);
|
free_netdev(dev);
|
||||||
return ERR_PTR(err);
|
return ERR_PTR(err);
|
||||||
|
|||||||
Reference in New Issue
Block a user