solaris net_interface_ipv6_config impl
This commit is contained in:
		
							parent
							
								
									e90567d94b
								
							
						
					
					
						commit
						3f1b24b7fc
					
				@ -26,6 +26,7 @@
 | 
				
			|||||||
#include <net/route.h>
 | 
					#include <net/route.h>
 | 
				
			||||||
#include <sys/lwp.h>
 | 
					#include <sys/lwp.h>
 | 
				
			||||||
#include <sys/proc.h>
 | 
					#include <sys/proc.h>
 | 
				
			||||||
 | 
					#include <sys/sockio.h>
 | 
				
			||||||
#include <sys/swap.h>
 | 
					#include <sys/swap.h>
 | 
				
			||||||
#include <sys/stat.h>
 | 
					#include <sys/stat.h>
 | 
				
			||||||
#include <sys/systeminfo.h>
 | 
					#include <sys/systeminfo.h>
 | 
				
			||||||
@ -2086,7 +2087,25 @@ int sigar_net_interface_stat_get(sigar_t *sigar, const char *name,
 | 
				
			|||||||
int sigar_net_interface_ipv6_config_get(sigar_t *sigar, const char *name,
 | 
					int sigar_net_interface_ipv6_config_get(sigar_t *sigar, const char *name,
 | 
				
			||||||
                                        sigar_net_interface_config_t *ifconfig)
 | 
					                                        sigar_net_interface_config_t *ifconfig)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    return SIGAR_ENOTIMPL;
 | 
					    int sock;
 | 
				
			||||||
 | 
					    struct lifreq lifr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ((sock = socket(AF_INET6, SOCK_DGRAM, 0)) < 0) {
 | 
				
			||||||
 | 
					        return errno;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    SIGAR_SSTRCPY(lifr.lifr_name, name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (ioctl(sock, SIOCGLIFADDR, &lifr) == 0) {
 | 
				
			||||||
 | 
					        struct in6_addr *addr = SIGAR_SIN6_ADDR(&lifr.lifr_addr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        sigar_net_address6_set(ifconfig->address6, addr);
 | 
				
			||||||
 | 
					        sigar_net_interface_scope6_set(ifconfig, addr);
 | 
				
			||||||
 | 
					        ifconfig->prefix6_length = lifr.lifr_addrlen;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    close(sock);
 | 
				
			||||||
 | 
					    return SIGAR_OK;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define TCPQ_SIZE(s) ((s) >= 0 ? (s) : 0)
 | 
					#define TCPQ_SIZE(s) ((s) >= 0 ? (s) : 0)
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user