l3roamd's People
l3roamd's Issues
limit wifistations.c to a given list of interfaces
Watch for new MACs on bridges
For wifi clients the nl80211 can inform us about new clients. This may also be possible for bridges.
Relevant kernel code:
please make cfg80211 dependency optional
when running l3roamd the kernel module cfg80211 must be loaded otherwise l3roamd exits with the message:
"nl80211 not found"
the error message seems to be originating from wifistations.c
106 int nl80211_id = genl_ctrl_resolve(ctx->nl_sock, "nl80211");
107 if (nl80211_id < 0) {
108 fprintf(stderr, "nl80211 not found.\n");
109 goto fail;
110 }
should l3roamd really depend on cfg80211 even if the system that it runs on does not contain wifi hardware?
Anleitung zur Installation
Gibt es irgendwo schon eine Anleitung wie man l3 baut und fürs debuggen auf einem Router laufen lässt?
listen for neighbour solicitations to fill routing table?
Reach node responsible for a client using a special IP
Nodes could generate a special IP address generated using a clients MAC address (like: PREFIX::MAC), announce a local route and assign this address to lo
. A node claiming a client would first look for a route to this special IP address and if it is present contact the node previously serving the client using this address to initiate a smooth handover.
Maybe use fec0::/10?
forget client if it doesn't have any routes
No replicated database
It may suffice to only store client information on a single node. In case this node disappears, routes to clients can be rediscovered when needed. This may cause slight hiccups.
If we do this, we'd need the ability to query the network for a specific client given its MAC address.
Basically we need two new packet types:
- request information about a MAC (should be flooded for now)
- response containing list of IPs for that MAC
Information about a MAC should be requested whenever a new client appears, even if local information is available
The request actually claims the client. If another node thinks it owns the client, it'll compare the timestamp. If the other node has a younger timestamp, it won't respond but instead claim the client itself (by sending a request).Otherwise, it'll respond and let got of the client.
- clientmgr_handle_claim dazu umbauen
1-hop redundancy?
l3roamd should support adding and removing of interfaces during runtime
maybe a rw-socket is a solution like babeld already implements it?
host-routes for clients are not placed in routing table
Periodically check for all (local) client's IP using ND
Check interval should be something like 5 minutes (configurable).
If an IP does not respond for twice the interval the IP and the route is removed.
- A client with IP should be forgotten altogether.
claim sendet keine IPs mit. Nur MAC.
check for memory leaks
- are all allocs (malloc/calloc) freed?
clean up whitespace
remove routes when appropiate
- periodically contact client (neighbor solicitation)
- update timestamp on reply
- purge clients that haven't responded for a while (also purge routes!)
obtaining IP-addresss when igmp_snooping=1 may take up to 5 minutes
I was able to capture this log. A new client (00:18:de:24:c6:7c) appears but it does not receive an IP address. In the same configuration in another connection attempt everything works.
What needs fixing?
Sun Nov 27 18:54:38 2016 daemon.info l3roamd[871]: client0: Checking Client 9c:eb:e8:20:92:a2 (active, br-client/7)
Sun Nov 27 18:54:38 2016 daemon.info l3roamd[871]: ACTIVE 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2 (865.217705780)
Sun Nov 27 18:54:38 2016 daemon.info l3roamd[871]: Send NS to ff02::1:ff20:92a2
Sun Nov 27 18:54:38 2016 daemon.info l3roamd[871]: Add Address: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2
Sun Nov 27 18:54:38 2016 daemon.info l3roamd[871]: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2 changes from ACTIVE to ACTIVE
Sun Nov 27 18:54:39 2016 daemon.info l3roamd[871]: event 19
Sun Nov 27 18:54:39 2016 daemon.info l3roamd[871]: client0: new station 00:18:de:24:c6:7c
Sun Nov 27 18:54:39 2016 daemon.info l3roamd[871]: new client 00:18:de:24:c6:7c on br-client
Sun Nov 27 18:54:39 2016 daemon.info l3roamd[871]: event 60
Sun Nov 27 18:54:39 2016 daemon.info l3roamd[871]: client0: Checking Client 00:18:de:24:c6:7c (active, br-client/7)
Sun Nov 27 18:54:39 2016 daemon.info hostapd: client0: STA 00:18:de:24:c6:7c IEEE 802.11: authenticated
Sun Nov 27 18:54:39 2016 daemon.info hostapd: client0: STA 00:18:de:24:c6:7c IEEE 802.11: associated (aid 1)
Sun Nov 27 18:54:39 2016 daemon.info l3roamd[871]: event 60
Sun Nov 27 18:54:39 2016 kern.warn kernel: [ 871.040000] REJECT(src client)IN=br-client OUT= MAC=ff:ff:ff:ff:ff:ff:00:18:de:24:c6:7c:08:00 SRC=0.0.0.0 DST=255.255.255.255 LEN=328 TOS=0x10 PREC=0x00 TTL=128 ID=0 PROTO=UDP SPT=68 DPT=67 LEN=308
Sun Nov 27 18:54:41 2016 daemon.info fastd[1597]: resolving host gw02.babel.ffm.freifunk.net' for peer <mesh_vpn_backbone_peer_fastd2>... Sun Nov 27 18:54:41 2016 daemon.info fastd[1597]: resolving host
gw02.babel.ffm.freifunk.net' failed: Name or service not known
Sun Nov 27 18:54:42 2016 kern.warn kernel: [ 873.550000] REJECT(src client)IN=br-client OUT= MAC=ff:ff:ff:ff:ff:ff:00:18:de:24:c6:7c:08:00 SRC=0.0.0.0 DST=255.255.255.255 LEN=328 TOS=0x10 PREC=0x00 TTL=128 ID=0 PROTO=UDP SPT=68 DPT=67 LEN=308
Sun Nov 27 18:54:43 2016 daemon.info l3roamd[871]: client0: Checking Client 9c:eb:e8:20:92:a2 (active, br-client/7)
Sun Nov 27 18:54:43 2016 daemon.info l3roamd[871]: ACTIVE 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2 (870.218194250)
Sun Nov 27 18:54:43 2016 daemon.info l3roamd[871]: Send NS to ff02::1:ff20:92a2
Sun Nov 27 18:54:43 2016 daemon.info l3roamd[871]: Add Address: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2
Sun Nov 27 18:54:43 2016 daemon.info l3roamd[871]: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2 changes from ACTIVE to ACTIVE
Sun Nov 27 18:54:44 2016 daemon.info l3roamd[871]: Checking Client 00:18:de:24:c6:7c (active, br-client/7)
Sun Nov 27 18:54:48 2016 daemon.info l3roamd[871]: Checking Client 9c:eb:e8:20:92:a2 (active, br-client/7)
Sun Nov 27 18:54:48 2016 daemon.info l3roamd[871]: ACTIVE 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2 (875.218978220)
Sun Nov 27 18:54:48 2016 daemon.info l3roamd[871]: Send NS to ff02::1:ff20:92a2
Sun Nov 27 18:54:48 2016 daemon.info l3roamd[871]: Add Address: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2
Sun Nov 27 18:54:48 2016 daemon.info l3roamd[871]: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2 changes from ACTIVE to ACTIVE
Sun Nov 27 18:54:48 2016 kern.warn kernel: [ 880.240000] REJECT(src client)IN=br-client OUT= MAC=ff:ff:ff:ff:ff:ff:00:18:de:24:c6:7c:08:00 SRC=0.0.0.0 DST=255.255.255.255 LEN=328 TOS=0x10 PREC=0x00 TTL=128 ID=0 PROTO=UDP SPT=68 DPT=67 LEN=308
Sun Nov 27 18:54:49 2016 daemon.info l3roamd[871]: Checking Client 00:18:de:24:c6:7c (active, br-client/7)
Sun Nov 27 18:54:53 2016 daemon.info l3roamd[871]: Checking Client 9c:eb:e8:20:92:a2 (active, br-client/7)
Sun Nov 27 18:54:53 2016 daemon.info l3roamd[871]: ACTIVE 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2 (880.219782270)
Sun Nov 27 18:54:53 2016 daemon.info l3roamd[871]: Send NS to ff02::1:ff20:92a2
Sun Nov 27 18:54:53 2016 daemon.info l3roamd[871]: Add Address: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2
Sun Nov 27 18:54:53 2016 daemon.info l3roamd[871]: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2 changes from ACTIVE to ACTIVE
Sun Nov 27 18:54:54 2016 daemon.info l3roamd[871]: Checking Client 00:18:de:24:c6:7c (active, br-client/7)
Sun Nov 27 18:54:58 2016 daemon.info l3roamd[871]: Checking Client 9c:eb:e8:20:92:a2 (active, br-client/7)
Sun Nov 27 18:54:58 2016 daemon.info l3roamd[871]: ACTIVE 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2 (885.220328500)
Sun Nov 27 18:54:58 2016 daemon.info l3roamd[871]: Send NS to ff02::1:ff20:92a2
Sun Nov 27 18:54:58 2016 daemon.info l3roamd[871]: Add Address: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2
Sun Nov 27 18:54:58 2016 daemon.info l3roamd[871]: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2 changes from ACTIVE to ACTIVE
Sun Nov 27 18:54:59 2016 daemon.info l3roamd[871]: Checking Client 00:18:de:24:c6:7c (active, br-client/7)
Sun Nov 27 18:55:00 2016 kern.warn kernel: [ 891.740000] REJECT(src client)IN=br-client OUT= MAC=ff:ff:ff:ff:ff:ff:00:18:de:24:c6:7c:08:00 SRC=0.0.0.0 DST=255.255.255.255 LEN=328 TOS=0x10 PREC=0x00 TTL=128 ID=0 PROTO=UDP SPT=68 DPT=67 LEN=308
Sun Nov 27 18:55:02 2016 daemon.info fastd[1597]: resolving host gw02.babel.ffm.freifunk.net' for peer <mesh_vpn_backbone_peer_fastd2>... Sun Nov 27 18:55:02 2016 daemon.info fastd[1597]: resolving host
gw02.babel.ffm.freifunk.net' failed: Name or service not known
Sun Nov 27 18:55:03 2016 daemon.info l3roamd[871]: Checking Client 9c:eb:e8:20:92:a2 (active, br-client/7)
as opposed to a different connection try, when everything seems to work in the same configuration, just a while later.
Nov 27 18:56:33 2016 daemon.info l3roamd[871]: Add Address: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2
Sun Nov 27 18:56:33 2016 daemon.info l3roamd[871]: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2 changes from ACTIVE to ACTIVE
Sun Nov 27 18:56:34 2016 daemon.info l3roamd[871]: Checking Client 00:18:de:24:c6:7c (active, br-client/7)
Sun Nov 27 18:56:38 2016 daemon.info l3roamd[871]: Checking Client 9c:eb:e8:20:92:a2 (active, br-client/7)
Sun Nov 27 18:56:38 2016 daemon.info l3roamd[871]: ACTIVE 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2 (985.257362680)
Sun Nov 27 18:56:38 2016 daemon.info l3roamd[871]: Send NS to ff02::1:ff20:92a2
Sun Nov 27 18:56:38 2016 daemon.info l3roamd[871]: Add Address: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2
Sun Nov 27 18:56:38 2016 daemon.info l3roamd[871]: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2 changes from ACTIVE to ACTIVE
Sun Nov 27 18:56:39 2016 daemon.info l3roamd[871]: Checking Client 00:18:de:24:c6:7c (active, br-client/7)
Sun Nov 27 18:56:42 2016 daemon.info fastd[1597]: resolving host gw02.babel.ffm.freifunk.net' for peer <mesh_vpn_backbone_peer_fastd2>... Sun Nov 27 18:56:42 2016 daemon.info fastd[1597]: resolving host
gw02.babel.ffm.freifunk.net' failed: Name or service not known
Sun Nov 27 18:56:43 2016 daemon.info l3roamd[871]: Checking Client 9c:eb:e8:20:92:a2 (active, br-client/7)
Sun Nov 27 18:56:43 2016 daemon.info l3roamd[871]: ACTIVE 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2 (990.256023740)
Sun Nov 27 18:56:43 2016 daemon.info l3roamd[871]: Send NS to ff02::1:ff20:92a2
Sun Nov 27 18:56:43 2016 daemon.info l3roamd[871]: Add Address: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2
Sun Nov 27 18:56:43 2016 daemon.info l3roamd[871]: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2 changes from ACTIVE to ACTIVE
Sun Nov 27 18:56:44 2016 daemon.info l3roamd[871]: Checking Client 00:18:de:24:c6:7c (active, br-client/7)
Sun Nov 27 18:56:44 2016 daemon.info l3roamd[871]: event 60
Sun Nov 27 18:56:47 2016 daemon.info l3roamd[871]: client0: event 19
Sun Nov 27 18:56:47 2016 daemon.info l3roamd[871]: client0: new station 00:18:de:24:c6:7c
Sun Nov 27 18:56:47 2016 daemon.info l3roamd[871]: new client 00:18:de:24:c6:7c on br-client
Sun Nov 27 18:56:47 2016 daemon.info l3roamd[871]: event 60
Sun Nov 27 18:56:47 2016 daemon.info l3roamd[871]: client0: Checking Client 00:18:de:24:c6:7c (active, br-client/7)
Sun Nov 27 18:56:47 2016 daemon.info hostapd: client0: STA 00:18:de:24:c6:7c IEEE 802.11: authenticated
Sun Nov 27 18:56:47 2016 daemon.info hostapd: client0: STA 00:18:de:24:c6:7c IEEE 802.11: associated (aid 1)
Sun Nov 27 18:56:47 2016 daemon.info l3roamd[871]: event 60
Sun Nov 27 18:56:47 2016 kern.warn kernel: [ 999.320000] REJECT(src client)IN=br-client OUT= MAC=ff:ff:ff:ff:ff:ff:00:18:de:24:c6:7c:08:00 SRC=0.0.0.0 DST=255.255.255.255 LEN=328 TOS=0x10 PREC=0x00 TTL=128 ID=0 PROTO=UDP SPT=68 DPT=67 LEN=308
Sun Nov 27 18:56:48 2016 daemon.info l3roamd[871]: client0: Checking Client 9c:eb:e8:20:92:a2 (active, br-client/7)
Sun Nov 27 18:56:48 2016 daemon.info l3roamd[871]: ACTIVE 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2 (995.255729510)
Sun Nov 27 18:56:48 2016 daemon.info l3roamd[871]: Send NS to ff02::1:ff20:92a2
Sun Nov 27 18:56:48 2016 daemon.info l3roamd[871]: Add Address: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2
Sun Nov 27 18:56:48 2016 daemon.info l3roamd[871]: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2 changes from ACTIVE to ACTIVE
Sun Nov 27 18:56:50 2016 kern.warn kernel: [ 1001.860000] REJECT(src client)IN=br-client OUT= MAC=ff:ff:ff:ff:ff:ff:00:18:de:24:c6:7c:08:00 SRC=0.0.0.0 DST=255.255.255.255 LEN=328 TOS=0x10 PREC=0x00 TTL=128 ID=0 PROTO=UDP SPT=68 DPT=67 LEN=308
Sun Nov 27 18:56:51 2016 daemon.info l3roamd[871]: Add Address: fe80::218:deff:fe24:c67c
Sun Nov 27 18:56:52 2016 daemon.info l3roamd[871]: Checking Client 00:18:de:24:c6:7c (active, br-client/7)
Sun Nov 27 18:56:53 2016 daemon.info l3roamd[871]: Checking Client 9c:eb:e8:20:92:a2 (active, br-client/7)
Sun Nov 27 18:56:53 2016 daemon.info l3roamd[871]: ACTIVE 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2 (1000.256491255)
Sun Nov 27 18:56:53 2016 daemon.info l3roamd[871]: Send NS to ff02::1:ff20:92a2
Sun Nov 27 18:56:53 2016 daemon.info l3roamd[871]: Add Address: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2
Sun Nov 27 18:56:53 2016 daemon.info l3roamd[871]: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2 changes from ACTIVE to ACTIVE
Sun Nov 27 18:56:56 2016 kern.warn kernel: [ 1008.210000] REJECT(src client)IN=br-client OUT= MAC=ff:ff:ff:ff:ff:ff:00:18:de:24:c6:7c:08:00 SRC=0.0.0.0 DST=255.255.255.255 LEN=328 TOS=0x10 PREC=0x00 TTL=128 ID=0 PROTO=UDP SPT=68 DPT=67 LEN=308
Sun Nov 27 18:56:57 2016 daemon.info l3roamd[871]: Checking Client 00:18:de:24:c6:7c (active, br-client/7)
Sun Nov 27 18:56:58 2016 daemon.info l3roamd[871]: Checking Client 9c:eb:e8:20:92:a2 (active, br-client/7)
Sun Nov 27 18:56:58 2016 daemon.info l3roamd[871]: ACTIVE 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2 (1005.257325825)
Sun Nov 27 18:56:58 2016 daemon.info l3roamd[871]: Send NS to ff02::1:ff20:92a2
Sun Nov 27 18:56:58 2016 daemon.info l3roamd[871]: Add Address: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2
Sun Nov 27 18:56:58 2016 daemon.info l3roamd[871]: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2 changes from ACTIVE to ACTIVE
Sun Nov 27 18:57:00 2016 daemon.info fastd[1597]: resolving host gw02.babel.ffm.freifunk.net' for peer <mesh_vpn_backbone_peer_fastd2>... Sun Nov 27 18:57:00 2016 daemon.info fastd[1597]: resolving host
gw02.babel.ffm.freifunk.net' failed: Name or service not known
Sun Nov 27 18:57:02 2016 daemon.info l3roamd[871]: Checking Client 00:18:de:24:c6:7c (active, br-client/7)
Sun Nov 27 18:57:03 2016 daemon.info l3roamd[871]: event 60
Sun Nov 27 18:57:03 2016 daemon.info l3roamd[871]: client0: Checking Client 9c:eb:e8:20:92:a2 (active, br-client/7)
Sun Nov 27 18:57:03 2016 daemon.info l3roamd[871]: ACTIVE 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2 (1010.258089745)
Sun Nov 27 18:57:03 2016 daemon.info l3roamd[871]: Send NS to ff02::1:ff20:92a2
Sun Nov 27 18:57:03 2016 daemon.info l3roamd[871]: Add Address: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2
Sun Nov 27 18:57:03 2016 daemon.info l3roamd[871]: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2 changes from ACTIVE to ACTIVE
Sun Nov 27 18:57:04 2016 daemon.info l3roamd[871]: Got packet to 2a06:8187:fbab:2:218:deff:fe24:c67c
Sun Nov 27 18:57:04 2016 daemon.info l3roamd[871]: Looking for 2a06:8187:fbab:2:218:deff:fe24:c67c
Sun Nov 27 18:57:04 2016 daemon.info l3roamd[871]: Send NS to ff02::1:ff24:c67c
Sun Nov 27 18:57:04 2016 daemon.info l3roamd[871]: Got packet to 2a06:8187:fbab:2:218:deff:fe24:c67c
Sun Nov 27 18:57:04 2016 daemon.info l3roamd[871]: Add Address: 2a06:8187:fbab:2:218:deff:fe24:c67c
Sun Nov 27 18:57:04 2016 daemon.info l3roamd[871]: 2a06:8187:fbab:2:218:deff:fe24:c67c changes from INACTIVE to ACTIVE
Sun Nov 27 18:57:07 2016 daemon.info l3roamd[871]: Checking Client 00:18:de:24:c6:7c (active, br-client/7)
Sun Nov 27 18:57:07 2016 daemon.info l3roamd[871]: ACTIVE 2a06:8187:fbab:2:218:deff:fe24:c67c (1015.826378795)
Sun Nov 27 18:57:07 2016 daemon.info l3roamd[871]: Send NS to ff02::1:ff24:c67c
Sun Nov 27 18:57:07 2016 daemon.info l3roamd[871]: Add Address: 2a06:8187:fbab:2:218:deff:fe24:c67c
Sun Nov 27 18:57:07 2016 daemon.info l3roamd[871]: 2a06:8187:fbab:2:218:deff:fe24:c67c changes from ACTIVE to ACTIVE
Sun Nov 27 18:57:08 2016 daemon.info l3roamd[871]: Checking Client 9c:eb:e8:20:92:a2 (active, br-client/7)
Sun Nov 27 18:57:08 2016 daemon.info l3roamd[871]: ACTIVE 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2 (1015.258922520)
Sun Nov 27 18:57:08 2016 daemon.info l3roamd[871]: Send NS to ff02::1:ff20:92a2
Sun Nov 27 18:57:08 2016 daemon.info l3roamd[871]: Add Address: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2
Sun Nov 27 18:57:08 2016 daemon.info l3roamd[871]: 2a06:8187:fbab:2:9eeb:e8ff:fe20:92a2 changes from ACTIVE to ACTIVE
l3roamd needs to know its unicast IP
In order to receive responses to claims l3roamd needs to know its unicast IP address. This IP address must be sent along with claims.
timers in l3roamd
- re-trigger ND NS after a timeout (e.g. 15 minutes)
- remove stale client and routes
- send intercom packets three times, with 1s delay
Clientdatabase entry should be semigroup
Basically, we'd want to merge two client entries like this. A client entry contains:
- the client's MAC address
- timestamp when this client was last discovered
- a list of IP addresses for that client, each with a last seen time
We need to merge it like this:
- timestamp = max(timestamp_a, timestamp_b)
- for each entry in ip_list_b check if it is in ip_list_a. if yes, update timestamp to max, else add entry as is
The idea would be that a node stores information about its clients. Other nodes can request that information. Multiple nodes may respond and the requesting node may already know a few IP addresses for the client. Upon receiving responses, the node would then combine them.
- response (clientinfo) is sent using unicast and TTL = 1
- After combining entries routes need to be updated. It may be necessary to derive a list of removed and added entries from the operation.
intercom_packet_info should indicate handover
intercom_packet_info should indicate whether the sending node was the previous owner of the client to indicate a successful handover.
RA should be a different daemon
As layed out in https://draic.info/2016/04/10/babel-in-gluon.html RAs should be managed a by a "client prefix daemon" instead of l3roamd.
clean up routes on exit
config file and command parser
- There should be a config file.
- There should be a command interface.
- Both share the same set of commands. The config file is, essentially, a script.
At the very least, these commands are required:
attach-mesh-interface
detach-mesh-interface
attach-client-interface
detach-client-interface
add-prefix
remove-prefix
set-export-table
run on multiple client interfaces (-i)
claim response sendet Liste von IPs
Ist eigentlich ähnlich des aktuellen claim pakets.
update README
write code to remove IPs from clients
Repeat claim up to three times
In case of no response a claim should be tried up to three times, each after a short delay of about 1s if no response is received. Use the relinquished
flag to determine when to stop.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.