Comments:
1. Please add a white character after "tipc:" in patch subject.
2. Please clearly describe this patch's purpose in patch commit head.

Thanks,
Ying

On 09/27/2018 05:08 PM, Hoang Le wrote:
> Signed-off-by: Hoang Le <hoang.h...@dektech.com.au>
> ---
>  net/tipc/udp_media.c | 18 +++++++++++++++---
>  1 file changed, 15 insertions(+), 3 deletions(-)
> 
> diff --git a/net/tipc/udp_media.c b/net/tipc/udp_media.c
> index 9783101bc4a9..ec3d31cdb232 100644
> --- a/net/tipc/udp_media.c
> +++ b/net/tipc/udp_media.c
> @@ -650,6 +650,7 @@ static int tipc_udp_enable(struct net *net, struct 
> tipc_bearer *b,
>       struct udp_tunnel_sock_cfg tuncfg = {NULL};
>       struct nlattr *opts[TIPC_NLA_UDP_MAX + 1];
>       u8 node_id[NODE_ID_LEN] = {0,};
> +     int rmcast = 0;
>  
>       ub = kzalloc(sizeof(*ub), GFP_ATOMIC);
>       if (!ub)
> @@ -680,6 +681,9 @@ static int tipc_udp_enable(struct net *net, struct 
> tipc_bearer *b,
>       if (err)
>               goto err;
>  
> +     /* Checking remote ip address */
> +     rmcast = tipc_udp_is_mcast_addr(&remote);
> +
>       /* Autoconfigure own node identity if needed */
>       if (!tipc_own_id(net)) {
>               memcpy(node_id, local.ipv6.in6_u.u6_addr8, 16);
> @@ -705,7 +709,12 @@ static int tipc_udp_enable(struct net *net, struct 
> tipc_bearer *b,
>                       goto err;
>               }
>               udp_conf.family = AF_INET;
> -             udp_conf.local_ip.s_addr = htonl(INADDR_ANY);
> +
> +             /* Switch to use ANY to recive packets from group */
> +             if (rmcast)
> +                     udp_conf.local_ip.s_addr = htonl(INADDR_ANY);
> +             else
> +                     udp_conf.local_ip.s_addr = local.ipv4.s_addr;
>               udp_conf.use_udp_checksums = false;
>               ub->ifindex = dev->ifindex;
>               if (tipc_mtu_bad(dev, sizeof(struct iphdr) +
> @@ -719,7 +728,10 @@ static int tipc_udp_enable(struct net *net, struct 
> tipc_bearer *b,
>               udp_conf.family = AF_INET6;
>               udp_conf.use_udp6_tx_checksums = true;
>               udp_conf.use_udp6_rx_checksums = true;
> -             udp_conf.local_ip6 = in6addr_any;
> +             if (rmcast)
> +                     udp_conf.local_ip6 = in6addr_any;
> +             else
> +                     udp_conf.local_ip6 = local.ipv6;
>               b->mtu = 1280;
>  #endif
>       } else {
> @@ -741,7 +753,7 @@ static int tipc_udp_enable(struct net *net, struct 
> tipc_bearer *b,
>        * is used if it's a multicast address.
>        */
>       memcpy(&b->bcast_addr.value, &remote, sizeof(remote));
> -     if (tipc_udp_is_mcast_addr(&remote))
> +     if (rmcast)
>               err = enable_mcast(ub, &remote);
>       else
>               err = tipc_udp_rcast_add(b, &remote);
> 


_______________________________________________
tipc-discussion mailing list
tipc-discussion@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tipc-discussion

Reply via email to