// SPDX-License-Identifier: GPL-2.0-or-later /* * Copyright (c) 2014 Oracle and/or its affiliates. All Rights Reserved. * Copyright (c) 2019 Petr Vorel * Author: Alexey Kodanev */ #define TST_NO_DEFAULT_MAIN #include #include "tst_safe_net.h" #include "tst_test.h" static void help(const char *fname) { printf("usage: %s FAMILY TYPE\n", fname); printf("FAMILY := { ipv4 | ipv6 }\n"); printf("TYPE := { stream | dgram }\n"); } int main(int argc, char *argv[]) { int family = 0, type = 0; int opt; while ((opt = getopt(argc, argv, ":h")) != -1) { switch (opt) { case 'h': help(argv[0]); return 0; default: help(argv[0]); return 1; } } if (argc != 3) { help(argv[0]); return 1; } if (!strcmp(argv[1], "ipv4")) family = AF_INET; else if (!strcmp(argv[1], "ipv6")) family = AF_INET6; if (!strcmp(argv[2], "stream")) type = SOCK_STREAM; else if (!strcmp(argv[2], "dgram")) type = SOCK_DGRAM; if (!family || !type) { help(argv[0]); return 1; } printf("%d", ntohs(TST_GET_UNUSED_PORT(family, type))); return 0; }