2009-11-10 2 views
2

나는이 작업을 수행하는 하나의 방법을 알고,struct in6_addr을 초기화하는 방법은 무엇입니까?

const struct in6_addr naddr6 = { { 
       0x3f, 0xfe, 0x05, 0x01, 
       0x00, 0x08, 0x00, 0x00, 
       0x02, 0x60, 0x97, 0xff, 
       0xfe, 0x40, 0xef, 0xab 
}}; 

하지만 할 수없는이와,

const struct in6_addr naddr6 = 
       { { { 0x3ffe0501, 0x00080000, 0x026097ff, 0xfe40efab } } }; 

그리고 내가 brackets.Why 중 하나 1/2/3 파리 수 있다는 것?

감사합니다.

답변

1

일 개 필요는 (C99를 사용하여 표시됨) 어드레싱되는 어드레스의 어떤 형태를 나타 내기 때문에 :

제 브라켓 쌍 된 in6_addr 구조체위한
const struct in6_addr naddr6 = 
    { { .u6_addr32 = { 0x3ffe0501, 0x00080000, 0x026097ff, 0xfe40efab } } }; 

, 결합 용 제 :

struct in6_addr 
    { 
    union 
     { 
uint8_t u6_addr8[16]; 
uint16_t u6_addr16[8]; 
uint32_t u6_addr32[4]; 
     } in6_u; 
    }; 
4

휴대 가능한 방법은 다음과 같습니다.

struct in6_addr s6 = { }; 
if (!IN6_IS_ADDR_UNSPECIFIED(&s6)) 
    inet_pton(AF_INET6, "2001:db8::1", &s6);