mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-11-04 12:14:19 +01:00
e0eba8ce21
```bash find . -type f \( -name "*.c" -o -name "*.h" -o -name "*.cpp" -o -name "*.hpp" \) ! -path "src/3rdparty/*" -print0 | xargs -0 clang-format -i ```
48 lines
1.3 KiB
C
48 lines
1.3 KiB
C
#pragma once
|
|
|
|
#include "fastfetch.h"
|
|
#include "modules/localip/option.h"
|
|
|
|
#ifndef IN6_IS_ADDR_GLOBAL
|
|
/* Global Unicast: 2000::/3 (001...) */
|
|
# define IN6_IS_ADDR_GLOBAL(a) (((a)->s6_addr[0] & 0xE0) == 0x20)
|
|
#endif
|
|
#ifndef IN6_IS_ADDR_UNIQUE_LOCAL
|
|
/* Unique Local: fc00::/7 (1111 110...) */
|
|
# define IN6_IS_ADDR_UNIQUE_LOCAL(a) (((a)->s6_addr[0] & 0xFE) == 0xFC)
|
|
#endif
|
|
#ifndef IN6_IS_ADDR_LINKLOCAL
|
|
/* Link-Local: fe80::/10 (1111 1110 10...) */
|
|
# define IN6_IS_ADDR_LINKLOCAL(a) (((a)->s6_addr[0] == 0xFE) && (((a)->s6_addr[1] & 0xC0) == 0x80))
|
|
#endif
|
|
|
|
typedef struct FFLocalIpResult {
|
|
FFstrbuf name;
|
|
FFstrbuf ipv4;
|
|
FFstrbuf ipv6;
|
|
FFstrbuf mac;
|
|
FFstrbuf flags;
|
|
int32_t mtu;
|
|
int32_t speed; // in Mbps
|
|
FFLocalIpType defaultRoute;
|
|
} FFLocalIpResult;
|
|
|
|
typedef struct FFLocalIpNIFlag {
|
|
uint32_t flag;
|
|
const char* name;
|
|
} FFLocalIpNIFlag;
|
|
|
|
static inline void ffLocalIpFillNIFlags(FFstrbuf* buf, uint64_t flag, const FFLocalIpNIFlag names[]) {
|
|
for (const FFLocalIpNIFlag* nf = names; flag && nf->name; ++nf) {
|
|
if (flag & nf->flag) {
|
|
if (buf->length > 0) {
|
|
ffStrbufAppendC(buf, ',');
|
|
}
|
|
ffStrbufAppendS(buf, nf->name);
|
|
flag &= ~nf->flag;
|
|
}
|
|
}
|
|
}
|
|
|
|
const char* ffDetectLocalIps(const FFLocalIpOptions* options, FFlist* results);
|