xref: /openbmc/google-misc/acpi-power-state-daemon/subprojects/ncsid/src/normalize_ip.c (revision dab96f131fb3a46d93f1093feccc9095d8589ece)
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*