From 7ec5099b5f5c79419a54a6cdedea618d98b60569 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 5 Nov 2003 10:44:19 +0000 Subject: Commit initial version git-svn-id: file:///home/lennart/svn/public/seppl/trunk@2 91a2fd9b-5dcb-0310-a70a-d71e310228e6 --- libs/Makefile.am | 28 +++++++++++++ libs/libipt_CRYPT.c | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++ libs/libipt_DECRYPT.c | 75 +++++++++++++++++++++++++++++++++ 3 files changed, 217 insertions(+) create mode 100644 libs/Makefile.am create mode 100644 libs/libipt_CRYPT.c create mode 100644 libs/libipt_DECRYPT.c (limited to 'libs') diff --git a/libs/Makefile.am b/libs/Makefile.am new file mode 100644 index 0000000..28de14f --- /dev/null +++ b/libs/Makefile.am @@ -0,0 +1,28 @@ +# $Id: Makefile.am 40 2003-10-27 18:32:45Z lennart $ +# +# This file is part of seppl. +# +# seppl 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. +# +# seppl 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. +# +# You should have received a copy of the GNU General Public License +# along with seppl; if not, write to the Free Software Foundation, +# Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. + +AM_CPPFLAGS=-I../kernel +iptlibdir = $(LIB_IPTABLES_DIR) + +iptlib_LTLIBRARIES = libipt_CRYPT.la libipt_DECRYPT.la + +libipt_CRYPT_la_SOURCES = libipt_CRYPT.c +libipt_CRYPT_la_LDFLAGS = -Wc,-nostartfiles -module + +libipt_DECRYPT_la_SOURCES = libipt_DECRYPT.c +libipt_DECRYPT_la_LDFLAGS = -Wc,-nostartfiles -module diff --git a/libs/libipt_CRYPT.c b/libs/libipt_CRYPT.c new file mode 100644 index 0000000..7e171f3 --- /dev/null +++ b/libs/libipt_CRYPT.c @@ -0,0 +1,114 @@ +/* $Id: newmail.c 31 2003-10-22 22:59:07Z lennart $ */ + +/*** + This file is part of seppl + + seppl 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. + + seppl 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. + + You should have received a copy of the GNU General Public License + along with seppl; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA +***/ + +#include +#include +#include +#include + +#include +#include + +#include "ipt_CRYPT.h" + + +/* Function which prints out usage message. */ +static void help(void) { + printf("CRYPT options:\n" + " --algorithm algo Select algorithm\n" + " --key key Select key\n"); +} + +static struct option opts[] = { + { "algorithm", 1, 0, 'a' }, + { "key", 1, 0, 'k' }, + { 0 } +}; + +static void init(struct ipt_entry_target *t, unsigned int *nfcache) { + struct ipt_crypt_info *crypt = (struct ipt_crypt_info *) t->data; + + memset(crypt, 0, sizeof(struct ipt_crypt_info)); + strncpy(crypt->name, "def", 7); + + *nfcache |= NFC_UNKNOWN; +} + +static int parse(int c, char **argv, int invert, unsigned int *flags, const struct ipt_entry *entry, struct ipt_entry_target **target) { + struct ipt_crypt_info *crypt = (struct ipt_crypt_info *)(*target)->data; + + switch(c) { + case 'a': + crypt->algorithm = atoi(optarg); + return 1; + + case 'k': + strncpy(crypt->name, optarg, 7); + return 1; + + } + + return 0; +} + +static void final_check(unsigned int flags) { +} + +static void print(const struct ipt_ip *ip, const struct ipt_entry_target *target, int numeric) { + const struct ipt_crypt_info *crypt = (const struct ipt_crypt_info *)target->data; + char txt[8]; + + strncpy(txt, crypt->name, 7); + txt[7] = 0; + + printf("key: %s algo: %i\n", txt, crypt->algorithm); +} + +static void save(const struct ipt_ip *ip, const struct ipt_entry_target *target) { + const struct ipt_crypt_info *crypt = (const struct ipt_crypt_info *)target->data; + char txt[8]; + + strncpy(txt, crypt->name, 7); + txt[7] = 0; + + printf("--algorithm %i ", crypt->algorithm); + printf("--key '%s'", txt); + +} + +static struct iptables_target crypt = { + NULL, + "CRYPT", + "1.2.8", + IPT_ALIGN(sizeof(struct ipt_crypt_info)), + IPT_ALIGN(sizeof(struct ipt_crypt_info)), + &help, + &init, + &parse, + &final_check, + &print, + &save, + opts +}; + +void _init(void) { + register_target(&crypt); +} diff --git a/libs/libipt_DECRYPT.c b/libs/libipt_DECRYPT.c new file mode 100644 index 0000000..a9a5fc9 --- /dev/null +++ b/libs/libipt_DECRYPT.c @@ -0,0 +1,75 @@ +/* $Id: newmail.c 31 2003-10-22 22:59:07Z lennart $ */ + +/*** + This file is part of seppl + + seppl 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. + + seppl 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. + + You should have received a copy of the GNU General Public License + along with seppl; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + USA +***/ + +#include +#include +#include +#include +#include +#include + +#include "ipt_DECRYPT.h" + + +/* Function which prints out usage message. */ +static void help(void) { + printf("DECRYPT options: none"); +} + +static struct option opts[] = { + { 0 } +}; + +static void init(struct ipt_entry_target *t, unsigned int *nfcache) { + *nfcache |= NFC_UNKNOWN; +} + +static int parse(int c, char **argv, int invert, unsigned int *flags, const struct ipt_entry *entry, struct ipt_entry_target **target) { + return 0; +} + +static void final_check(unsigned int flags) { +} + +static void print(const struct ipt_ip *ip, const struct ipt_entry_target *target, int numeric) { +} + +static void save(const struct ipt_ip *ip, const struct ipt_entry_target *target) { +} + +static struct iptables_target decrypt = { + NULL, + "DECRYPT", + "1.2.8", + IPT_ALIGN(sizeof(struct ipt_decrypt_info)), + IPT_ALIGN(sizeof(struct ipt_decrypt_info)), + &help, + &init, + &parse, + &final_check, + &print, + &save, + opts +}; + +void _init(void) { + register_target(&decrypt); +} -- cgit