GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 2, or (at your
+ by the Free Software Foundation; either version 3, or (at your
option) any later version.
GNUnet is distributed in the hope that it will be useful, but
/**
* @file include/gnunet_vpn_service.h
- * @brief API to access the VPN service.
+ * @brief API to access the VPN service.
* @author Christian Grothoff
*/
#ifndef GNUNET_VPN_SERVICE_H
#define GNUNET_VPN_SERVICE_H
-#include "gnunet_common.h"
#include "gnunet_util_lib.h"
* reach the requested destination.
*
* @param cls closure
- * @param af address family, AF_INET or AF_INET6; AF_UNSPEC on error
+ * @param af address family, AF_INET or AF_INET6; AF_UNSPEC on error;
+ * will match 'result_af' from the request
* @param address IP address (struct in_addr or struct in_addr6, depending on 'af')
* that the VPN allocated for the redirection;
- * traffic to this IP will now be redirected to the
+ * traffic to this IP will now be redirected to the
* specified target peer; NULL on error
*/
typedef void (*GNUNET_VPN_AllocationCallback)(void *cls,
* limitations, the longest inactive mappings will be destroyed.
*
* @param vh VPN handle
- * @param af address family, AF_INET or AF_INET6
+ * @param result_af desired address family for the returned allocation
+ * can also be AF_UNSPEC
* @param protocol protocol, IPPROTO_UDP or IPPROTO_TCP
* @param peer target peer for the redirection
* @param serv service descriptor to give to the peer
- * @param nac GNUNET_YES to notify via callback only after completion of
- * the MESH-level connection,
- * GNUNET_NO to notify as soon as the IP has been reserved
+ * @param expiration_time at what time should the redirection expire?
+ * (this should not impact connections that are active at that time)
* @param cb function to call with the IP
* @param cb_cls closure for cb
* @return handle to cancel the request (means the callback won't be
* anyway)
*/
struct GNUNET_VPN_RedirectionRequest *
-GNUNET_VPN_redirect_to_peer (struct GNUNET_VPN_RequestHandle *rh,
- int af,
+GNUNET_VPN_redirect_to_peer (struct GNUNET_VPN_Handle *vh,
+ int result_af,
uint8_t protocol,
const struct GNUNET_PeerIdentity *peer,
- const HashCode *serv,
- int nac,
+ const struct GNUNET_HashCode *serv,
+ struct GNUNET_TIME_Absolute expiration_time,
GNUNET_VPN_AllocationCallback cb,
void *cb_cls);
* limitations, the longest inactive mappings will be destroyed.
*
* @param vh VPN handle
- * @param af address family, AF_INET or AF_INET6
+ * @param result_af desired address family for the returned allocation,
+ * can also be AF_UNSPEC
+ * @param addr_af address family for 'addr', AF_INET or AF_INET6
* @param addr destination IP address on the Internet; destination
* port is to be taken from the VPN packet itself
- * @param nac GNUNET_YES to notify via callback only after completion of
- * the MESH-level connection,
- * GNUNET_NO to notify as soon as the IP has been reserved
+ * @param expiration_time at what time should the redirection expire?
+ * (this should not impact connections that are active at that time)
* @param cb function to call with the IP
* @param cb_cls closure for cb
* @return handle to cancel the request (means the callback won't be
* anyway)
*/
struct GNUNET_VPN_RedirectionRequest *
-GNUNET_VPN_redirect_to_ip (struct GNUNET_VPN_RequestHandle *rh,
- int af,
+GNUNET_VPN_redirect_to_ip (struct GNUNET_VPN_Handle *vh,
+ int result_af,
+ int addr_af,
const void *addr,
- int nac,
+ struct GNUNET_TIME_Absolute expiration_time,
GNUNET_VPN_AllocationCallback cb,
void *cb_cls);
* Connect to the VPN service
*
* @param cfg configuration to use
- * @return VPN handle
+ * @return VPN handle
*/
struct GNUNET_VPN_Handle *
GNUNET_VPN_connect (const struct GNUNET_CONFIGURATION_Handle *cfg);