60 lines
1.1 KiB
C
60 lines
1.1 KiB
C
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
/*
|
|
* Copyright (c) 2014 Oracle and/or its affiliates. All Rights Reserved.
|
|
* Copyright (c) 2019 Petr Vorel <pvorel@suse.cz>
|
|
* Author: Alexey Kodanev <alexey.kodanev@oracle.com>
|
|
*/
|
|
|
|
#define TST_NO_DEFAULT_MAIN
|
|
#include <stdio.h>
|
|
|
|
#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;
|
|
}
|