summaryrefslogtreecommitdiff
path: root/keyexchange/isakmpd-20041012/anytun_key.c
blob: 60047e37b3872c976f44b09169d6661f4f7f6891 (plain) (blame)
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;
	 }