-
-int ans_key_h(conn_list_t *cl, unsigned char *d, int len)
-{
- key_req_t *tmp = (key_req_t*)d;
- conn_list_t *fw, *gk;
-
- if(debug_lvl > 3)
- syslog(LOG_DEBUG, "got ANS_KEY from " IP_ADDR_S " for " IP_ADDR_S,
- IP_ADDR_V(tmp->from), IP_ADDR_V(tmp->to));
-
- if(tmp->to == myself->vpn_ip)
- { /* hey! that key's for ME! :) */
- if(debug_lvl > 2)
- syslog(LOG_DEBUG, "Yeah! key arrived. Now do something with it.");
- gk = lookup_conn(tmp->from);
- set_keys(gk, tmp);
- gk->status.validkey = 1;
- gk->status.waitingforkey = 0;
- flush_queues(gk);
- return 0;
- }
-
- fw = lookup_conn(tmp->to);
- if(debug_lvl > 2)
- syslog(LOG_DEBUG, "Forwarding public key to " IP_ADDR_S,
- IP_ADDR_V(fw->nexthop->vpn_ip));
- if(send(fw->nexthop->meta_socket, tmp, sizeof(key_req_t)+tmp->len, 0) < 0)
- {
- syslog(LOG_ERR, "send failed: %s:%d: %m", __FILE__, __LINE__);
- return -1;
- }
-
- return 0;
-}
-
-int key_changed_h(conn_list_t *cl, unsigned char *d, int len)
-{
- key_changed_t *tmp = (key_changed_t*)d;
- conn_list_t *ik;
-
- if(debug_lvl > 2)
- syslog(LOG_DEBUG, "got KEY_CHANGED from " IP_ADDR_S,
- IP_ADDR_V(tmp->from));
-
- ik = lookup_conn(tmp->from);
- ik->status.validkey = 0;
- ik->status.waitingforkey = 0;
-
- if(debug_lvl > 3)
- syslog(LOG_DEBUG, "Forwarding key invalidation request");
-
- notify_others(cl, ik, send_key_changed);
-
- return 0;
-}
-
-int (*request_handlers[256])(conn_list_t*, unsigned char*, int) = {
- 0, ack_h, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- termreq_h, timeout_h, del_host_h, 0, 0, 0, 0, 0, 0, 0,
- ping_h, pong_h, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- add_host_h, basic_info_h, passphrase_h, public_key_h, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- req_key_h, ans_key_h, key_changed_h, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-