File: pam_shield.h

package info (click to toggle)
pam-shield 0.9.2-3.3~squeeze1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 216 kB
  • ctags: 113
  • sloc: ansic: 988; sh: 461; makefile: 102
file content (61 lines) | stat: -rw-r--r-- 1,250 bytes parent folder | download | duplicates (6)
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
/*
	pam_shield.h	WJ106
*/

#ifndef PAM_SHIELD_WJ106
#define PAM_SHIELD_WJ106	1

#include <netinet/in.h>

#define PAM_SHIELD_ADDR_IPV4		0
#define PAM_SHIELD_ADDR_IPV6		1

typedef struct {
	unsigned char addr_family;	/* PAM_SHIELD_ADDR_IPV4|PAM_SHIELD_ADDR_IPV6 */
	union {
		struct in_addr in;		/* IPv4 number */
		struct in6_addr in6;	/* IPv6 number */
		char any[1];			/* access to any */
	} ip;

	unsigned int max_entries;	/* number of timestamps */
	unsigned int count;			/* number of auth requests done */
	time_t trigger_active;		/* time the trigger was triggered (needed for expiration) */
	time_t timestamps[1];		/* sliding window of timestamps */
} _pam_shield_db_rec_t;


/*
	the IP list is used for making in-memory whitelists
	(they are not in the database, but in the config file)
*/
typedef struct ip_list_tag ip_list;

struct ip_list_tag {
	union {
		struct in_addr in;
		struct in6_addr in6;
		unsigned char any[1];
	} ip;

	union {
		struct in_addr in;
		struct in6_addr in6;
		unsigned char any[1];
	} mask;

	ip_list *prev, *next;
};

/* whitelisted hosntnames and network names */
typedef struct name_list_tag name_list;

struct name_list_tag {
	name_list *prev, *next;

	char name[1];
};

#endif	/* PAM_SHIELD_WJ106 */

/* EOB */