mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-10-27 12:48:22 +00:00
tools: netinfo
This commit is contained in:
@@ -32,6 +32,8 @@ tools/prof/astral-prof
|
||||
tools/prof/main.o
|
||||
tools/systrace/systrace
|
||||
tools/systrace/main.o
|
||||
tools/netinfo/main.o
|
||||
tools/netinfo/netinfo
|
||||
initrds
|
||||
hdd.img
|
||||
netdump.dat
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
name=netinfo
|
||||
revision=1
|
||||
from_source=netinfo
|
||||
imagedeps="build-essential"
|
||||
hostdeps="xbinutils xgcc"
|
||||
deps="base"
|
||||
|
||||
build() {
|
||||
make -C ${source_dir} -j ${parallelism}
|
||||
}
|
||||
|
||||
package() {
|
||||
make -C ${source_dir} install PREFIX=${prefix} DESTDIR=${dest_dir}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
name=netinfo
|
||||
version=0
|
||||
source_dir="tools/netinfo"
|
||||
@@ -0,0 +1,14 @@
|
||||
.phony: all install
|
||||
CC=x86_64-astral-gcc
|
||||
LD=x86_64-astral-gcc
|
||||
all: netinfo
|
||||
|
||||
install:
|
||||
mkdir -p "$(DESTDIR)/$(PREFIX)/sbin/"
|
||||
cp netinfo "$(DESTDIR)/$(PREFIX)/sbin/netinfo"
|
||||
|
||||
netinfo: main.o
|
||||
$(LD) $(LDFLAGS) -g -o $@ $^
|
||||
|
||||
main.o: main.c
|
||||
$(CC) -c $(CFLAGS) -g -o $@ $<
|
||||
@@ -0,0 +1,38 @@
|
||||
#define _GNU_SOURCE
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <ifaddrs.h>
|
||||
#include <arpa/inet.h>
|
||||
#include <net/if.h>
|
||||
|
||||
static void print_error(const char *msg, const int error) {
|
||||
fprintf(stderr, "%s: %s: %s\n", program_invocation_short_name, msg, strerror(error));
|
||||
}
|
||||
|
||||
int main(const int argc, const char *argv[]) {
|
||||
struct ifaddrs *ifaddrs;
|
||||
if (getifaddrs(&ifaddrs)) {
|
||||
print_error("getifaddrs", errno);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
for (struct ifaddrs *ifaddr = ifaddrs; ifaddr; ifaddr = ifaddr->ifa_next) {
|
||||
if (ifaddr->ifa_addr->sa_family != AF_INET)
|
||||
continue;
|
||||
|
||||
printf("%s: flags: 0x%x%s%s%s\n",
|
||||
ifaddr->ifa_name, ifaddr->ifa_flags,
|
||||
ifaddr->ifa_flags & IFF_UP ? " UP" : "",
|
||||
ifaddr->ifa_flags & IFF_LOOPBACK ? " LOOPBACK" : "",
|
||||
ifaddr->ifa_flags & IFF_RUNNING ? " RUNNING" : "");
|
||||
printf("%s: address: %s\n", ifaddr->ifa_name, ifaddr->ifa_addr ? inet_ntoa(((struct sockaddr_in *)ifaddr->ifa_addr)->sin_addr) : "?");
|
||||
printf("%s: mask: %s\n", ifaddr->ifa_name, ifaddr->ifa_netmask ? inet_ntoa(((struct sockaddr_in *)ifaddr->ifa_netmask)->sin_addr) : "?");
|
||||
printf("%s: broadcast: %s\n", ifaddr->ifa_name, ifaddr->ifa_broadaddr ? inet_ntoa(((struct sockaddr_in *)ifaddr->ifa_broadaddr)->sin_addr) : "?");
|
||||
}
|
||||
|
||||
freeifaddrs(ifaddrs);
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
Reference in New Issue
Block a user