… | |
… | |
889 | slog (L_TRACE, "<<%d PT_CONNECT_REQ(%d) [%d]\n", |
889 | slog (L_TRACE, "<<%d PT_CONNECT_REQ(%d) [%d]\n", |
890 | conf->id, p->id, c->ictx && c->octx); |
890 | conf->id, p->id, c->ictx && c->octx); |
891 | |
891 | |
892 | if (c->ictx && c->octx) |
892 | if (c->ictx && c->octx) |
893 | { |
893 | { |
|
|
894 | // send connect_info packets to both sides, in case one is |
|
|
895 | // behind a nat firewall (or both ;) |
|
|
896 | { |
894 | sockinfo si(sa); |
897 | sockinfo si(sa); |
895 | |
898 | |
896 | slog (L_TRACE, ">>%d PT_CONNECT_INFO(%d,%s)\n", |
899 | slog (L_TRACE, ">>%d PT_CONNECT_INFO(%d,%s)\n", |
897 | c->conf->id, p->id, (const char *)si); |
900 | c->conf->id, conf->id, (const char *)si); |
898 | |
901 | |
899 | connect_info_packet *r = new connect_info_packet (c->conf->id, conf->id, si); |
902 | connect_info_packet *r = new connect_info_packet (c->conf->id, conf->id, si); |
900 | |
903 | |
901 | r->hmac_set (c->octx); |
904 | r->hmac_set (c->octx); |
902 | vpn->send_vpn_packet (r, &c->sa); |
905 | vpn->send_vpn_packet (r, &c->sa); |
903 | |
906 | |
904 | delete r; |
907 | delete r; |
|
|
908 | } |
|
|
909 | |
|
|
910 | { |
|
|
911 | sockinfo si(c->sa); |
|
|
912 | |
|
|
913 | slog (L_TRACE, ">>%d PT_CONNECT_INFO(%d,%s)\n", |
|
|
914 | conf->id, c->conf->id, (const char *)si); |
|
|
915 | |
|
|
916 | connect_info_packet *r = new connect_info_packet (conf->id, c->conf->id, si); |
|
|
917 | |
|
|
918 | r->hmac_set (octx); |
|
|
919 | vpn->send_vpn_packet (r, &sa); |
|
|
920 | |
|
|
921 | delete r; |
|
|
922 | } |
905 | } |
923 | } |
906 | } |
924 | } |
907 | |
925 | |
908 | break; |
926 | break; |
909 | |
927 | |