diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2015-03-23 01:40:35 +0100 |
---|---|---|
committer | Matthias Schiffer <mschiffer@universe-factory.net> | 2015-03-23 01:40:35 +0100 |
commit | 0e8493ea17c1bba64ee0de588bdbad7fdb6fd9ba (patch) | |
tree | ff1474d41067c45e4d9b2190601e43a03f8aec74 /src/peer.c | |
parent | 08e782b27d47c4b5e74d505aecfee661ff9df4e0 (diff) | |
download | fastd-0e8493ea17c1bba64ee0de588bdbad7fdb6fd9ba.tar fastd-0e8493ea17c1bba64ee0de588bdbad7fdb6fd9ba.zip |
Use peer-specific interface in TUN mode
Diffstat (limited to 'src/peer.c')
-rw-r--r-- | src/peer.c | 13 |
1 files changed, 12 insertions, 1 deletions
@@ -378,7 +378,13 @@ static void setup_peer(fastd_peer_t *peer) { peer->verify_valid_timeout = ctx.now; #endif - peer->iface = ctx.iface; + if (ctx.iface) { + peer->iface = ctx.iface; + } + else if (conf.iface_persist && !peer->iface) { + peer->iface = fastd_iface_open(peer); + fastd_on_up(peer->iface); + } if (!fastd_peer_is_enabled(peer)) /* Keep the peer in STATE_INACTIVE */ @@ -437,6 +443,11 @@ static void delete_peer(fastd_peer_t *peer) { conf.protocol->free_peer_state(peer); + if (peer->iface && peer->iface->peer) { + fastd_on_down(peer->iface); + fastd_iface_close(peer->iface); + } + fastd_peer_free(peer); } |