v4转v6

来源:互联网 发布:贵州广电网络收费标准 编辑:程序博客网 时间:2024/09/21 08:56

ip转换:

const uint8_t g_zero_addr[128] = {0};typedef struct {    union    {        uint8_t     head[12];        uint32_t u32_head[3];    }head_un;} mapped_head_t;mapped_head_t g_v4_mapped_head;int map_v4_to_v6(const struct in_addr *src_addr,struct in6_addr *dest_addr){    unsigned char *p_dest_ip = NULL;    g_v4_mapped_head.head_un.u32_head[2] = htonl(0x0000ffff);    if(0 != memcmp(src_addr, g_zero_addr, sizeof(struct in_addr)))    {        p_dest_ip = (unsigned char *)dest_addr;        memcpy(p_dest_ip + 12,src_addr, sizeof(struct in_addr));        memcpy(p_dest_ip, g_v4_mapped_head.head_un.head, 12);    }    else    {        memset((char *)dest_addr, 0, sizeof(struct in6_addr));        return -1;    }    return 0;}


0 0
原创粉丝点击