util: Added IPv6 support in help funtions addreq and str2addr
Signed-off-by: Anders Selhammer <anders.selhammer@est.tech>
This commit is contained in:
		
							parent
							
								
									8f2f9bbcab
								
							
						
					
					
						commit
						d88b4ff229
					
				
							
								
								
									
										17
									
								
								util.c
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								util.c
									
									
									
									
									
								
							| @ -80,13 +80,17 @@ int addreq(enum transport_type type, struct address *a, struct address *b) | ||||
| 		bufb = &b->sin.sin_addr; | ||||
| 		len = sizeof(a->sin); | ||||
| 		break; | ||||
| 	case TRANS_UDP_IPV6: | ||||
| 		bufa = &a->sin6.sin6_addr; | ||||
| 		bufb = &b->sin6.sin6_addr; | ||||
| 		len = sizeof(a->sin6); | ||||
| 		break; | ||||
| 	case TRANS_IEEE_802_3: | ||||
| 		bufa = &a->sll.sll_addr; | ||||
| 		bufb = &b->sll.sll_addr; | ||||
| 		len = MAC_LEN; | ||||
| 		break; | ||||
| 	case TRANS_UDS: | ||||
| 	case TRANS_UDP_IPV6: | ||||
| 	case TRANS_DEVICENET: | ||||
| 	case TRANS_CONTROLNET: | ||||
| 	case TRANS_PROFINET: | ||||
| @ -171,12 +175,12 @@ int str2addr(enum transport_type type, const char *s, struct address *addr) | ||||
| { | ||||
| 	unsigned char mac[MAC_LEN]; | ||||
| 	struct in_addr ipv4_addr; | ||||
| 	struct in6_addr ipv6_addr; | ||||
| 
 | ||||
| 	memset(addr, 0, sizeof(*addr)); | ||||
| 
 | ||||
| 	switch (type) { | ||||
| 	case TRANS_UDS: | ||||
| 	case TRANS_UDP_IPV6: | ||||
| 	case TRANS_DEVICENET: | ||||
| 	case TRANS_CONTROLNET: | ||||
| 	case TRANS_PROFINET: | ||||
| @ -191,6 +195,15 @@ int str2addr(enum transport_type type, const char *s, struct address *addr) | ||||
| 		addr->sin.sin_addr = ipv4_addr; | ||||
| 		addr->len = sizeof(addr->sin); | ||||
| 		break; | ||||
| 	case TRANS_UDP_IPV6: | ||||
| 		if (1 != inet_pton(AF_INET6, s, &ipv6_addr)) { | ||||
| 			pr_err("bad IPv6 address"); | ||||
| 			return -1; | ||||
| 		} | ||||
| 		addr->sin6.sin6_family = AF_INET6; | ||||
| 		addr->sin6.sin6_addr = ipv6_addr; | ||||
| 		addr->len = sizeof(addr->sin6); | ||||
| 		break; | ||||
| 	case TRANS_IEEE_802_3: | ||||
| 		if (str2mac(s, mac)) { | ||||
| 			pr_err("bad Layer-2 address"); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user