1* /* 2* * Copyright 2021 Google LLC 3* * 4* * Licensed under the Apache License, Version 2.0 (the "License"); 5* * you may not use this file except in compliance with the License. 6* * You may obtain a copy of the License at 7* * 8* * http://www.apache.org/licenses/LICENSE-2.0 9* * 10* * Unless required by applicable law or agreed to in writing, software 11* * distributed under the License is distributed on an "AS IS" BASIS, 12* * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13* * See the License for the specific language governing permissions and 14* * limitations under the License. 15* */ 16* 17* #include <arpa/inet.h> 18* #include <stdio.h> 19* 20* int main(int argc, char* argv[]) 21* { 22* if (argc < 1) 23* { 24* return 1; 25* } 26* if (argc != 2) 27* { 28* fprintf(stderr, "Usage: %s <ip address>\n", argv[0]); 29* return 1; 30* } 31* 32* union 33* { 34* struct in_addr in; 35* struct in6_addr in6; 36* } buf; 37* int af = AF_INET6; 38* if (inet_pton(af, argv[1], &buf) != 1) 39* { 40* af = AF_INET; 41* if (inet_pton(af, argv[1], &buf) != 1) 42* { 43* fprintf(stderr, "Invalid IP Address: %s\n", argv[1]); 44* return 2; 45* } 46* } 47* 48* char str[INET6_ADDRSTRLEN]; 49* if (inet_ntop(af, &buf, str, sizeof(str)) == NULL) 50* { 51* return 1; 52* } 53* 54* printf("%s\n", str); 55* return 0; 56* } 57*