1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
#include "anytun_key.h"
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/queue.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <sys/uio.h>
#include <string.h>
#include "sysdep.h"
#include "cert.h"
#include "conf.h"
#include "exchange.h"
#include "ipsec.h"
#include "ipsec_num.h"
#include "key.h"
#include "log.h"
#include "pf_key_v2.h"
#include "sa.h"
#include "timer.h"
#include "transport.h"
#include "util.h"
#include <sys/socket.h>
#include <netdb.h>
int anytun_key_socket;
void anytun_key_connection_check(char * conn)
{
}
int anytun_key_delete_spi(struct sa *sa, struct proto *proto, int incoming)
{
return 0;
}
int anytun_key_enable_sa(struct sa *sa, struct sa *isakmp_sa)
{
struct ipsec_sa *isa = sa->data;
struct sockaddr *dst, *src;
char idsrc[256], iddst[256];
// int error;
// struct proto *proto = TAILQ_FIRST(&sa->protos);
// int sidtype = 0, didtype = 0;
// size_t sidlen = 0, didlen = 0;
// u_int8_t *sid = 0, *did = 0;
sa->transport->vtbl->get_dst(sa->transport, &dst);
sa->transport->vtbl->get_src(sa->transport, &src);
if (getnameinfo(src, sysdep_sa_len(src), idsrc, sizeof idsrc, NULL, 0,
NI_NUMERICHOST) != 0) {
log_print("udp_decode_ids: getnameinfo () failed for 'src'");
strlcpy(idsrc, "<error>", 256);
}
if (getnameinfo(dst, sysdep_sa_len(dst), iddst, sizeof iddst, NULL, 0,
NI_NUMERICHOST) != 0) {
log_print("udp_decode_ids: getnameinfo () failed for 'dst'");
strlcpy(iddst, "<error>", 256);
}
printf( "anytun src: %s dst: %s\n", idsrc, iddst);
//struct ipsec_sa {
// /* Phase 1. */
// u_int8_t hash;
// size_t skeyid_len;
// u_int8_t *skeyid_d;
// u_int8_t *skeyid_a;
// u_int16_t prf_type;
//
// /* Phase 2. */
// u_int16_t group_desc;
//
// /* Tunnel parameters. These are in network byte order. */
// struct sockaddr *src_net;
// struct sockaddr *src_mask;
// struct sockaddr *dst_net;
// struct sockaddr *dst_mask;
// u_int8_t tproto;
// u_int16_t sport;
// u_int16_t dport;
//};
return 0;
}
//int anytun_key_enable_spi(in_addr_t, in_addr_t, in_addr_t,
// in_addr_t, u_int8_t *, u_int8_t, in_addr_t)
// {
// }
struct sa_kinfo * anytun_key_get_kernel_sa(u_int8_t *spi, size_t spi_sz, u_int8_t proto,
struct sockaddr *dst)
{
return 0;
}
u_int8_t *anytun_key_get_spi(size_t *sz, u_int8_t proto, struct sockaddr *src,
struct sockaddr *dst, u_int32_t seq)
{
*sz = 4;
/* XXX should be random instead I think. */
return strdup ("\x12\x34\x56\x78");
}
int anytun_key_group_spis(struct sa *sa, struct proto *proto1,
struct proto *proto2, int incoming)
{
return 0;
}
void anytun_key_handler(int fd)
{
}
int anytun_key_open(void)
{
return 0;
}
int anytun_key_set_spi(struct sa *sa, struct proto *proto, int incoming,
struct sa *isakmp_sa)
{
return 0;
}
|