mirror of
				https://github.com/open5gs/open5gs.git
				synced 2025-11-03 21:43:25 +00:00 
			
		
		
		
	IPv6 setting done.. but IPv6 routining table update is not working.
This commit is contained in:
		@@ -7,6 +7,7 @@
 | 
				
			|||||||
#include <linux/if_tun.h>
 | 
					#include <linux/if_tun.h>
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
#include <netinet6/in6_var.h>
 | 
					#include <netinet6/in6_var.h>
 | 
				
			||||||
 | 
					#include <netinet6/nd6.h>
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if HAVE_NET_ROUTE_H
 | 
					#if HAVE_NET_ROUTE_H
 | 
				
			||||||
@@ -243,6 +244,9 @@ status_t tun_set_ipv6(sock_id id, ipsubnet_t *ipaddr, ipsubnet_t *ipsub)
 | 
				
			|||||||
	mask.sin6_len = sizeof(mask);
 | 
						mask.sin6_len = sizeof(mask);
 | 
				
			||||||
	(void)memcpy(&ifa.ifra_prefixmask, &mask, sizeof(ifa.ifra_prefixmask));
 | 
						(void)memcpy(&ifa.ifra_prefixmask, &mask, sizeof(ifa.ifra_prefixmask));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ifa.ifra_lifetime.ia6t_vltime = ND6_INFINITE_LIFETIME;
 | 
				
			||||||
 | 
					    ifa.ifra_lifetime.ia6t_pltime = ND6_INFINITE_LIFETIME;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (ioctl(fd, SIOCAIFADDR_IN6, &ifa) == -1) {
 | 
						if (ioctl(fd, SIOCAIFADDR_IN6, &ifa) == -1) {
 | 
				
			||||||
		d_error("Can't IP address(dev:%s err:%s)",
 | 
							d_error("Can't IP address(dev:%s err:%s)",
 | 
				
			||||||
                sock->ifname, strerror(errno));
 | 
					                sock->ifname, strerror(errno));
 | 
				
			||||||
@@ -255,6 +259,7 @@ status_t tun_set_ipv6(sock_id id, ipsubnet_t *ipaddr, ipsubnet_t *ipsub)
 | 
				
			|||||||
    return CORE_OK;
 | 
					    return CORE_OK;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fd = socket(PF_ROUTE, SOCK_RAW, 0);
 | 
					    fd = socket(PF_ROUTE, SOCK_RAW, 0);
 | 
				
			||||||
    if (fd < 0)
 | 
					    if (fd < 0)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@@ -267,7 +272,7 @@ status_t tun_set_ipv6(sock_id id, ipsubnet_t *ipaddr, ipsubnet_t *ipsub)
 | 
				
			|||||||
    rtm->rtm_type = RTM_ADD;
 | 
					    rtm->rtm_type = RTM_ADD;
 | 
				
			||||||
    rtm->rtm_version = RTM_VERSION;
 | 
					    rtm->rtm_version = RTM_VERSION;
 | 
				
			||||||
    rtm->rtm_pid = getpid();
 | 
					    rtm->rtm_pid = getpid();
 | 
				
			||||||
    rtm->rtm_seq = 1;
 | 
					    rtm->rtm_seq = 0;
 | 
				
			||||||
    rtm->rtm_flags = RTF_UP | RTF_GATEWAY;
 | 
					    rtm->rtm_flags = RTF_UP | RTF_GATEWAY;
 | 
				
			||||||
    rtm->rtm_addrs = RTA_DST | RTA_GATEWAY | RTA_NETMASK;
 | 
					    rtm->rtm_addrs = RTA_DST | RTA_GATEWAY | RTA_NETMASK;
 | 
				
			||||||
    paddr = (struct sockaddr_in6 *)(rtm + 1);
 | 
					    paddr = (struct sockaddr_in6 *)(rtm + 1);
 | 
				
			||||||
@@ -332,9 +337,7 @@ status_t tun_set_ip(sock_id id, const char *ipstr, const char *mask_or_numbits)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    else
 | 
					    else
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
#if 0
 | 
					 | 
				
			||||||
        rv = tun_set_ipv6(id, &ipaddr, &ipsub);
 | 
					        rv = tun_set_ipv6(id, &ipaddr, &ipsub);
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return rv;
 | 
					    return rv;
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user