1 /* ipguard.h 2 * 3 * Copyright (c) 2010 SeaD <sead at deep.perm.ru> 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 14 * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE 18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 * 26 * $Id: ipguard.h,v 1.17 2010/07/12 03:46:36 sead Exp $ 27 * 28 */ 29 30 #ifndef _IPGUARD_H 31 #define _IPGUARD_H 1 32 33 #include <stdlib.h> 34 #include <stdio.h> 35 #include <string.h> 36 #include <unistd.h> 37 #include <errno.h> 38 39 #include <limits.h> /* PATH_MAX */ 40 41 #define IP_ADDR_LEN 4 42 #ifndef IFNAMSIZ 43 # define IFNAMSIZ 16 44 #endif 45 #ifndef MAXLOGNAME 46 # define MAXLOGNAME 16 47 #endif 48 49 #define NAME "ipguard" 50 #define VERSION "1.04" 51 #define AUTHOR "SeaD" 52 #define MAIL "sead at deep.perm.ru" 53 54 #define ETHERSFILE ETHERS 55 #define LOGNAME "/var/log/ipguard" 56 #define PIDNAME "/var/run/ipguard" 57 #define FAKEMAC "de:ad:xx:xx:xx:xx" 58 #define PCAPFSIZ 128 59 60 #define ETHERSTO 0 61 #define FAKEREGEN 0 62 #define FAKENUM 2 63 #define FAKETIME 50 /* milliseconds */ 64 #define BUFSIZE 10 65 66 #define ERROR 1 67 #define WARNING 2 68 #define NOTICE 3 69 #define INFO 4 70 71 char iface[IFNAMSIZ]; 72 char ethers_name[PATH_MAX]; 73 char log_name[PATH_MAX]; 74 char pid_name[PATH_MAX]; 75 char fmac[18]; 76 char pcapf[PCAPFSIZ]; 77 char suser[MAXLOGNAME]; 78 int ethers_update; 79 int fake_regen; 80 int fake_num; 81 int fake_time; 82 int buffer_num; 83 int addr_nosubst; 84 int nofirst; 85 int grant; 86 int read_only; 87 int duplex; 88 int fixbc; 89 int hidden; 90 int promisc; 91 int debug; 92 int verbose; 93 94 unsigned int all, good, grat, wgrat, zmac, zip, bad, bmac, bsip, btip, 95 bnew, bgrat, mymac, fake, pfake, nzh, nbe, mis; 96 char pfmac[18]; 97 char s[128+1]; 98 99 /* ethers.c 100 */ 101 void ethers_init(void); 102 void ethers_reinit(void); 103 104 /* packet.c 105 */ 106 void buffer_dump(void); 107 void buffer_dump2ethers(void); 108 void pair_init(void); 109 void pair_destroy (void); 110 void pair_add(char *mac, char *ip); 111 void pair_dump(void); 112 void packet_init(char *iface); 113 void packet_destroy (void); 114 void packet_recv(void); 115 void stat_dump(void); 116 117 /* system.c 118 */ 119 void exit_ipguard(int reason); 120 void sig_init(void); 121 void sig_func(int signal); 122 void sig_catch(void); 123 void log_open(void); 124 void log_str(int pri, char *ent, char *err); 125 void log_close(void); 126 void log_reopen(void); 127 void pid_creat(void); 128 void pid_unlink(void); 129 void daemonize(void); 130 void set_user(void); 131 void mac_rand(char *mac); 132 void mac_regen(char *mac); 133 char *time_get(void); 134 void ethers_stat(void); 135 136 #endif /* _IPGUARD_H */ 137