-
Notifications
You must be signed in to change notification settings - Fork 4
/
gssvpn.h
63 lines (57 loc) · 1.76 KB
/
gssvpn.h
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
/*
* Copyright 2011 Jonathan Reams
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#define PAC_DATA 0
#define PAC_GSSINIT 2
#define PAC_NETINIT 1
#define PAC_SHUTDOWN 3
#define PAC_ECHO 4
#define PAC_NETSTART 5
#define CLIENT_IP 1
#define CLIENT_ETHERNET 2
#define CLIENT_ALL 3
#ifdef GSSVPN_SERVER
struct conn {
uint16_t sid;
gss_ctx_id_t context;
unsigned long gssstate;
struct sockaddr_in addr;
char ipstr[INET6_ADDRSTRLEN];
char * princname;
uint8_t mac[6];
struct conn * ipnext;
struct conn * ethernext;
ev_child nichild;
ev_io nipipe;
ev_timer conntimeout;
gss_buffer_desc ni;
struct ev_loop * loop;
};
#endif
void display_gss_err(OM_uint32 major, OM_uint32 minor);
int send_packet(int s, gss_buffer_desc * out,
struct sockaddr_in * peer, char pac, uint16_t sid);
int recv_packet(int s, gss_buffer_desc * out,
char * pacout, struct sockaddr_in * peer, uint16_t * sid);
void logit(int level, char * fmt, ...);
uint8_t hash(uint8_t * in, int len);
int open_tap(char ** dev);
int open_net(short port);
gss_ctx_id_t get_context(struct sockaddr_in * peer, uint16_t sid);
#ifdef GSSVPN_SERVER
struct conn * get_conn(struct sockaddr_in * peer, uint16_t sid);
struct conn * get_conn_ether(char * mac);
void unlink_conn(struct conn * conn, char which);
#endif