00001 #include "ip6address.h"
00002
00003 namespace n2nc {
00004 namespace net {
00005
00006 IP6Address::IP6Address() : Address()
00007 {
00008 m_af=AF_INET6;
00009 }
00010
00011 IP6Address::IP6Address(std::string &addr) : Address()
00012 {
00013 Address* ret ;
00014 std::cerr << "hello IPV6. respwawn resolver" << addr << std::endl ;
00015 ret = n2nc::net::Resolver::getAddressByFQDN(addr,false);
00016 if(!ret) {
00017
00018 throw ;
00019 }
00020 this->m_addr = ((IP6Address*)ret)->m_addr ;
00021 this->m_af=AF_INET6;
00022 delete ret;
00023 }
00024
00025 IP6Address::IP6Address(struct in6_addr *addr) : Address()
00026 {
00027
00028 std::cerr << "hello IPV6 " << std::endl ;
00029 this->m_af=AF_INET6;
00030 this->m_addr = *addr ;
00031 }
00032
00033 std::string IP6Address::toString() const{
00034 struct sockaddr_in6 t_addr;
00035 char s_ip[63];
00036 memset(&t_addr,0, sizeof(t_addr));
00037 t_addr.sin6_addr = this->m_addr ;
00038 t_addr.sin6_family = AF_INET6 ;
00039 getnameinfo((struct sockaddr*)&t_addr,sizeof(t_addr),s_ip,63,NULL,0,NI_NUMERICHOST);
00040 std::string ret_ip(s_ip);
00041 return ret_ip ;
00042 }
00043
00044
00045 void IP6Address::getRawAddress(void **addr,size_t *len){
00046 *addr = (void*)&((IP6Address*)this)->m_addr ;
00047 *len = sizeof(((IP6Address*)this)->m_addr);
00048 }
00049
00050 IP6Address::~IP6Address()
00051 {
00052 }
00053
00054
00055 }
00056 }