linux-user: handle netlink flag NLA_F_NESTED
Newer kernel versions require this flag to be present contrary to older
ones. Depending on the libnl version it is added or not.
Typically when using rtnl_link_inet6_set_addr_gen_mode, the netlink
packet generated may contain the following attribute:
with libnl 3.4
  {nla_len=16, nla_type=IFLA_AF_SPEC},
  [
    {nla_len=12, nla_type=AF_INET6},
    [{nla_len=5, nla_type=IFLA_INET6_ADDR_GEN_MODE}, IN6_ADDR_GEN_MODE_NONE]
  ]
with libnl 3.7
  {nla_len=16, nla_type=NLA_F_NESTED|IFLA_AF_SPEC},
  [
    {nla_len=12, nla_type=NLA_F_NESTED|AF_INET6},
    [{nla_len=5, nla_type=IFLA_INET6_ADDR_GEN_MODE}, IN6_ADDR_GEN_MODE_NONE]]
  ]
Masking the type is likely needed in other places. Only the above cases
are implemented in this patch.
Signed-off-by: Mathis Marion <mathis.marion@silabs.com>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <20230307154256.101528-3-Mathis.Marion@silabs.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
			
			
This commit is contained in:
		
							parent
							
								
									44cf6731d6
								
							
						
					
					
						commit
						2fe8ed6fe9
					
				| @ -1359,7 +1359,7 @@ static abi_long target_to_host_for_each_rtattr(struct rtattr *rtattr, | ||||
| 
 | ||||
| static abi_long target_to_host_data_spec_nlattr(struct nlattr *nlattr) | ||||
| { | ||||
|     switch (nlattr->nla_type) { | ||||
|     switch (nlattr->nla_type & NLA_TYPE_MASK) { | ||||
|     case AF_INET6: | ||||
|         return target_to_host_for_each_nlattr(NLA_DATA(nlattr), nlattr->nla_len, | ||||
|                                               target_to_host_data_inet6_nlattr); | ||||
| @ -1375,7 +1375,7 @@ static abi_long target_to_host_data_link_rtattr(struct rtattr *rtattr) | ||||
| { | ||||
|     uint32_t *u32; | ||||
| 
 | ||||
|     switch (rtattr->rta_type) { | ||||
|     switch (rtattr->rta_type & NLA_TYPE_MASK) { | ||||
|     /* uint32_t */ | ||||
|     case QEMU_IFLA_MTU: | ||||
|     case QEMU_IFLA_TXQLEN: | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Mathis Marion
						Mathis Marion