… | |
… | |
58 | |
58 | |
59 | static time_t next_timecheck; |
59 | static time_t next_timecheck; |
60 | |
60 | |
61 | #define MAGIC "vped\xbd\xc6\xdb\x82" // 8 bytes of magic |
61 | #define MAGIC "vped\xbd\xc6\xdb\x82" // 8 bytes of magic |
62 | |
62 | |
63 | static u8 |
|
|
64 | best_protocol (u8 protset) |
|
|
65 | { |
|
|
66 | if (protset & PROT_IPv4) |
|
|
67 | return PROT_IPv4; |
|
|
68 | |
|
|
69 | return PROT_UDPv4; |
|
|
70 | } |
|
|
71 | |
|
|
72 | struct crypto_ctx |
63 | struct crypto_ctx |
73 | { |
64 | { |
74 | EVP_CIPHER_CTX cctx; |
65 | EVP_CIPHER_CTX cctx; |
75 | HMAC_CTX hctx; |
66 | HMAC_CTX hctx; |
76 | |
67 | |
… | |
… | |
682 | void |
673 | void |
683 | connection::send_auth_request (const sockinfo &si, bool initiate) |
674 | connection::send_auth_request (const sockinfo &si, bool initiate) |
684 | { |
675 | { |
685 | auth_req_packet *pkt = new auth_req_packet (conf->id, initiate, THISNODE->protocols); |
676 | auth_req_packet *pkt = new auth_req_packet (conf->id, initiate, THISNODE->protocols); |
686 | |
677 | |
687 | prot_send = best_protocol (THISNODE->protocols & conf->protocols); |
678 | protocol = best_protocol (THISNODE->protocols & conf->protocols); |
688 | |
679 | |
689 | rsachallenge chg; |
680 | rsachallenge chg; |
690 | |
681 | |
691 | rsa_cache.gen (pkt->id, chg); |
682 | rsa_cache.gen (pkt->id, chg); |
692 | |
683 | |
… | |
… | |
990 | delete p; |
981 | delete p; |
991 | } |
982 | } |
992 | |
983 | |
993 | connectmode = conf->connectmode; |
984 | connectmode = conf->connectmode; |
994 | |
985 | |
995 | slog (L_INFO, _("%s(%s): connection established, protocol version %d.%d"), |
986 | slog (L_INFO, _("%s(%s): %s connection established, protocol version %d.%d"), |
996 | conf->nodename, (const char *)rsi, |
987 | conf->nodename, (const char *)rsi, |
|
|
988 | strprotocol (protocol), |
997 | p->prot_major, p->prot_minor); |
989 | p->prot_major, p->prot_minor); |
998 | |
990 | |
999 | if (::conf.script_node_up) |
991 | if (::conf.script_node_up) |
1000 | run_script (run_script_cb (this, &connection::script_node_up), false); |
992 | run_script (run_script_cb (this, &connection::script_node_up), false); |
1001 | |
993 | |
… | |
… | |
1171 | |
1163 | |
1172 | // send a vpn packet out to other hosts |
1164 | // send a vpn packet out to other hosts |
1173 | void |
1165 | void |
1174 | connection::send_vpn_packet (vpn_packet *pkt, const sockinfo &si, int tos) |
1166 | connection::send_vpn_packet (vpn_packet *pkt, const sockinfo &si, int tos) |
1175 | { |
1167 | { |
1176 | if (prot_send & PROT_IPv4) |
1168 | if (protocol & PROT_IPv4) |
1177 | vpn->send_ipv4_packet (pkt, si, tos); |
1169 | vpn->send_ipv4_packet (pkt, si, tos); |
1178 | else |
1170 | else |
1179 | vpn->send_udpv4_packet (pkt, si, tos); |
1171 | vpn->send_udpv4_packet (pkt, si, tos); |
1180 | } |
1172 | } |
1181 | |
1173 | |