#include #include #include #include #include #include #include /* oport6.c is provided by 0x4D722E20446F6E This code is ripped and modified from Joonbok Lee Presentation about IPv6 Socket Programming */ int main(int argc, char *argv[]){ int s, c, retval, addrlen; struct addrinfo Hints, *AddrInfo, *AI; if(argc!=3){ printf("Usage : %s \n", argv[0]); exit(0); } memset(&Hints,0,sizeof(Hints)); Hints.ai_family = AF_UNSPEC; Hints.ai_socktype = SOCK_STREAM; retval = getaddrinfo(argv[1],argv[2], &Hints, &AddrInfo); if(retval!=0){ printf("Cannot resolve requested address\n"); exit(0); } for(AI=AddrInfo;AI!=NULL;AI=AI->ai_next){ if(AI->ai_family==AF_INET6){ if((s=socket(AI->ai_family,AI->ai_socktype,AI->ai_protocol))<0){ printf("can't create socket\n"); exit(0); } c=connect(s,AI->ai_addr,AI->ai_addrlen); if(c==0){ printf("[OPEN] %s on %s\n",argv[1],argv[2]); }else{ printf("[CLOSE/FIREWALL] %s on %s\n",argv[1],argv[2]); } }else{ printf("%s is not IPv6 family\n",argv[1]); } freeaddrinfo(AddrInfo); } }