diff options
Diffstat (limited to 'src/fib_macos.hrl')
-rw-r--r-- | src/fib_macos.hrl | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/src/fib_macos.hrl b/src/fib_macos.hrl new file mode 100644 index 0000000..d1cd1a1 --- /dev/null +++ b/src/fib_macos.hrl @@ -0,0 +1,146 @@ +-define(TABLE, 1). + +%% Constants and structs are mostly defined in `net/route.h`. +%% /Library/Developer/CommandLineTools/SDKs/MacOSX12.0.sdk/usr/include/net/route.h + +-define(RTM_VERSION, 5). + +%% PF_ROUTE messages types +-define(RTM_ADD, 1). +-define(RTM_DELETE, 2). +-define(RTM_CHANGE, 3). +-define(RTM_GET, 4). +-define(RTM_REDIRECT, 6). +-define(RTM_MISS, 7). +-define(RTM_RESOLVE, 16#b). +-define(RTM_NEWADDR, 16#c). +-define(RTM_DELADDR, 16#d). +-define(RTM_IFINFO, 16#e). +-define(RTM_NEWMADDR, 16#f). +-define(RTM_DELMADDR, 16#10). +-define(RTM_IFINFO2, 16#12). +-define(RTM_NEWMADDR2, 16#13). +-define(RTM_GET2, 16#14). +-define(RTM, #{ + ?RTM_ADD => add, + ?RTM_DELETE => delete, + ?RTM_CHANGE => change, + ?RTM_GET => get, + ?RTM_REDIRECT => redirect, + ?RTM_MISS => miss, + ?RTM_RESOLVE => resolve, + ?RTM_NEWADDR => newaddr, + ?RTM_DELADDR => deladdr, + ?RTM_IFINFO => ifinfo, + ?RTM_NEWMADDR => newmaddr, + ?RTM_DELMADDR => delmaddr, + ?RTM_IFINFO2 => ifinfo2, + ?RTM_NEWMADDR2 => newmaddr2, + ?RTM_GET2 => get2 + }). + +%% Bitmask values for flags +-define(RTF_UP, 1). +-define(RTF_GATEWAY, 2). +-define(RTF_HOST, 4). +-define(RTF_REJECT, 8). +-define(RTF_DYNAMIC, 16#10). +-define(RTF_MODIFIED, 16#20). +-define(RTF_DONE, 16#40). +-define(RTF_DELCLONE, 16#80). +-define(RTF_CLONING, 16#100). +-define(RTF_XRESOLVE, 16#200). +-define(RTF_LLDATA, 16#400). +-define(RTF_STATIC, 16#800). +-define(RTF_BLACKHOLE, 16#1000). +-define(RTF_NOIFREF, 16#2000). +-define(RTF_PROTO2, 16#4000). +-define(RTF_PROTO1, 16#8000). +-define(RTF_PRCLONING, 16#10000). +-define(RTF_WASCLONED, 16#20000). +-define(RTF_PROTO3, 16#40000). +-define(RTF_PINNED, 16#100000). +-define(RTF_LOCAL, 16#200000). +-define(RTF_BROADCAST, 16#400000). +-define(RTF_MULTICAST, 16#800000). +-define(RTF_IFSCOPE, 16#1000000). +-define(RTF_CONDEMNED, 16#2000000). +-define(RTF_IFREF, 16#4000000). +-define(RTF_PROXY, 16#8000000). +-define(RTF_ROUTER, 16#10000000). +-define(RTF_DEAD, 16#20000000). +-define(RTF_GLOBAL, 16#40000000). +-define(RTF, [{?RTF_UP, up}, {?RTF_GATEWAY, gateway}, {?RTF_HOST, host}, {?RTF_REJECT, reject}, + {?RTF_DYNAMIC, dynamic}, {?RTF_MODIFIED, modified}, {?RTF_DONE, done}, {?RTF_DELCLONE, delclone}, + {?RTF_CLONING, cloning}, {?RTF_XRESOLVE, xresolve}, {?RTF_LLDATA, lldata}, {?RTF_STATIC, static}, + {?RTF_BLACKHOLE, blackhole}, {?RTF_NOIFREF, noifref}, {?RTF_PROTO2, proto2}, {?RTF_PROTO1, proto1}, + {?RTF_PRCLONING, prcloning}, {?RTF_WASCLONED, wascloned}, {?RTF_PROTO3, proto3}, {?RTF_PINNED, pinned}, + {?RTF_LOCAL, local}, {?RTF_BROADCAST, broadcast}, {?RTF_MULTICAST, multicast}, {?RTF_IFSCOPE, ifscope}, + {?RTF_CONDEMNED, condemned}, {?RTF_IFREF, ifref}, {?RTF_PROXY, proxy}, {?RTF_ROUTER, router}, + {?RTF_DEAD, dead}, {?RTF_GLOBAL, global}]). + +%% Bitmask values, rtm_inits and rtm_locks +-define(RTV_MTU, 1). +-define(RTV_HOPCOUNT, 2). +-define(RTV_EXPIRE, 4). +-define(RTV_RPIPE, 8). +-define(RTV_SPIPE, 16#10). +-define(RTV_SSTHRESH, 16#20). +-define(RTV_RTT, 16#40). +-define(RTV_RTTVAR, 16#80). +-define(RTV, [{?RTV_MTU, mtu}, {?RTV_HOPCOUNT, hopcount}, {?RTV_EXPIRE, expire}, {?RTV_RPIPE, recvpipe}, {?RTV_SPIPE, sendpipe}, + {?RTV_SSTHRESH, ssthresh}, {?RTV_RTT, rtt}, {?RTV_RTTVAR, rttvar}]). + +%% Bitmask values for rtm_addrs +-define(RTA_DST, 1). % destination sockaddr present +-define(RTA_GATEWAY, 2). % gateway sockaddr present +-define(RTA_NETMASK, 4). % netmask sockaddr present +-define(RTA_GENMASK, 8). % cloning mask sockaddr present +-define(RTA_IFP, 16#10). % interface name sockaddr present +-define(RTA_IFA, 16#20). % interface addr sockaddr present +-define(RTA_AUTHOR, 16#40). % sockaddr for addr of redirect +-define(RTA_BRD, 16#80). % for NEWADDR, broadcast or p-p dest addr +-define(RTA, [{?RTA_DST, destination}, {?RTA_GATEWAY, gateway}, {?RTA_NETMASK, netmask}, + {?RTA_GENMASK, genmask}, {?RTA_IFP, ifp}, {?RTA_IFA, ifa}, + {?RTA_AUTHOR, author}, {?RTA_BRD, brd}]). + +%% usr/include/sys/socket.h +-define(AF_UNSPEC, 0). +-define(AF_INET, 2). +-define(AF_LINK, 18). +-define(AF_INET6, 31). + +-record(macos_rt, {type, % Message type, atom + flags, % Route flags + addrs, % Addresses list + pid, % Originating pid + seq, % user data + errno, % error number + use, % documented as: "from rentry" + + % Metrics + metrics_init, % metrics that are initializing + metrics_lock, % metrics that are locked + mtu, % mtu + hopcount, % max hops expected + expire, % lifetime for route + recvpipe, % inbound delay-bandwith product + sendpipe, % outbound delay-bandwith product + ssthresh, % outbound gateway buffer limit + rtt, % estimated round trip time + rttvar, % estimated rtt variance + pksent, % packets sent using this route + state, % route state + filler, % "will be used for TCP's peer-MSS cache" + + % Addresses + destination, % Destination + gateway, % Gateway + netmask, % netmask + clonemask, % (C: genmask) cloning mask + ifp, % interface name + ifp_index, % (C: index) Scope for associated ifp, if present + ifa, % interface address + author, % author of redirect + brd % (only for type=newaddr) broadcast or p-p destination address +}). |