aboutsummaryrefslogtreecommitdiffstats
path: root/Source/stroke/stroke.h
blob: 2f756798dea02d6bfbd2c42822b7da37fc00cc1e (plain)
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
/**
 * @file stroke.h
 *
 * @brief Definition of stroke_msg_t.
 *
 */

/*
 * Copyright (C) 2006 Martin Willi
 * Hochschule fuer Technik Rapperswil
 *
 * This program 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 of the License, or (at your
 * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * for more details.
 */

#ifndef STROKE_H_
#define STROKE_H_

#define STROKE_SOCKET "/var/run/charon.ctl"

/**
 * @brief A stroke message sent over the unix socket.
 * 
 */
typedef struct stroke_msg_t stroke_msg_t;

struct stroke_msg_t {
	/* length of this message with all strings */
	u_int16_t length;
	/* type of the message */
	enum {
		/* initiate a connection */
		STR_INITIATE,
		/* install SPD entries for a connection */
		STR_INSTALL,
		/* add a connection */
		STR_ADD_CONN,
		/* delete a connection */
		STR_DEL_CONN,
		/* terminate connection */
		STR_TERMINATE,
		/* show connection status */
		STR_STATUS,
		/* set a log type to log/not log */
		STR_LOGTYPE,
		/* set the verbosity of a logging context */
		STR_LOGLEVEL,
		/* more to come */
	} type;
	union {
		/* data for STR_INITIATE, STR_INSTALL, STR_UP, STR_DOWN */
		struct {
			char *name;
		} initiate, install, terminate;
		/* data for STR_ADD_CONN */
		struct {
			char *name;
			struct {
				char *id;
				char *cert;
				char *address;
				char *subnet;
				u_int8_t subnet_mask;
			} me, other;
		} add_conn;
		struct {
			char *context;
			char *type;
			int enable;
		} logtype;
		struct {
			char *context;
			u_int level;
		} loglevel;
	};
	u_int8_t buffer[];
};

#endif /* STROKE_H_ */