mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-11-01 15:08:21 +00:00
tools: netinfo
This commit is contained in:
@@ -32,6 +32,8 @@ tools/prof/astral-prof
|
|||||||
tools/prof/main.o
|
tools/prof/main.o
|
||||||
tools/systrace/systrace
|
tools/systrace/systrace
|
||||||
tools/systrace/main.o
|
tools/systrace/main.o
|
||||||
|
tools/netinfo/main.o
|
||||||
|
tools/netinfo/netinfo
|
||||||
initrds
|
initrds
|
||||||
hdd.img
|
hdd.img
|
||||||
netdump.dat
|
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