diff options
author | Cameron Katri <me@cameronkatri.com> | 2021-05-09 14:20:58 -0400 |
---|---|---|
committer | Cameron Katri <me@cameronkatri.com> | 2021-05-09 14:20:58 -0400 |
commit | 5fd83771641d15c418f747bd343ba6738d3875f7 (patch) | |
tree | 5abf0f78f680d9837dbd93d4d4c3933bb7509599 /network_cmds/ifconfig.tproj/nexus.c | |
download | apple_cmds-5fd83771641d15c418f747bd343ba6738d3875f7.tar.gz apple_cmds-5fd83771641d15c418f747bd343ba6738d3875f7.tar.zst apple_cmds-5fd83771641d15c418f747bd343ba6738d3875f7.zip |
Import macOS userland
adv_cmds-176
basic_cmds-55
bootstrap_cmds-116.100.1
developer_cmds-66
diskdev_cmds-667.40.1
doc_cmds-53.60.1
file_cmds-321.40.3
mail_cmds-35
misc_cmds-34
network_cmds-606.40.1
patch_cmds-17
remote_cmds-63
shell_cmds-216.60.1
system_cmds-880.60.2
text_cmds-106
Diffstat (limited to 'network_cmds/ifconfig.tproj/nexus.c')
-rw-r--r-- | network_cmds/ifconfig.tproj/nexus.c | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/network_cmds/ifconfig.tproj/nexus.c b/network_cmds/ifconfig.tproj/nexus.c new file mode 100644 index 0000000..3df9842 --- /dev/null +++ b/network_cmds/ifconfig.tproj/nexus.c @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2017 Apple Computer, Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * The contents of this file constitute Original Code as defined in and + * are subject to the Apple Public Source License Version 1.1 (the + * "License"). You may not use this file except in compliance with the + * License. Please obtain a copy of the License at + * http://www.apple.com/publicsource and read it before using this file. + * + * This Original Code and all software distributed under the License are + * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the + * License for the specific language governing rights and limitations + * under the License. + * + * @APPLE_LICENSE_HEADER_END@ + */ + +/* + * nexus.c + * - report information about attached nexus + */ + +/* + * Modification History: + * + * April 10, 2017 Dieter Siegmund (dieter@apple.com) + * - created + */ + +#include <sys/param.h> +#include <sys/ioctl.h> +#include <sys/socket.h> + +#include <stdlib.h> +#include <unistd.h> + +#include <net/ethernet.h> +#include <net/if.h> +#include <net/if_var.h> +#include <net/if_fake_var.h> + +#include <net/route.h> + +#include <ctype.h> +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <unistd.h> +#include <err.h> +#include <errno.h> + +#include "ifconfig.h" + +static void +nexus_status(int s) +{ + struct if_nexusreq ifnr; + uuid_string_t flowswitch; + uuid_string_t netif; + + if (!verbose) { + return; + } + bzero((char *)&ifnr, sizeof(ifnr)); + strlcpy(ifnr.ifnr_name, ifr.ifr_name, sizeof(ifnr.ifnr_name)); + if (ioctl(s, SIOCGIFNEXUS, &ifnr) < 0) { + return; + } + if (uuid_is_null(ifnr.ifnr_netif)) { + /* technically, this shouldn't happen */ + return; + } + uuid_unparse_upper(ifnr.ifnr_netif, netif); + printf("\tnetif: %s\n", netif); + if (uuid_is_null(ifnr.ifnr_flowswitch) == 0) { + uuid_unparse_upper(ifnr.ifnr_flowswitch, flowswitch); + printf("\tflowswitch: %s\n", flowswitch); + } + return; +} + +static struct afswtch af_fake = { + .af_name = "af_fake", + .af_af = AF_UNSPEC, + .af_other_status = nexus_status, +}; + +static __constructor void +fake_ctor(void) +{ + af_register(&af_fake); +} + |