15eed48af2516ebce0412121713d285bc30edb10dRusty Russell/* 25eed48af2516ebce0412121713d285bc30edb10dRusty Russell * Author: Paul.Russell@rustcorp.com.au and mneuling@radlogic.com.au 35eed48af2516ebce0412121713d285bc30edb10dRusty Russell * 410a907f6736864f3f60d36f78c78e655b6bb64eeHarald Welte * (C) 2000-2002 by the netfilter coreteam <coreteam@netfilter.org>: 510a907f6736864f3f60d36f78c78e655b6bb64eeHarald Welte * Paul 'Rusty' Russell <rusty@rustcorp.com.au> 610a907f6736864f3f60d36f78c78e655b6bb64eeHarald Welte * Marc Boucher <marc+nf@mbsi.ca> 710a907f6736864f3f60d36f78c78e655b6bb64eeHarald Welte * James Morris <jmorris@intercode.com.au> 810a907f6736864f3f60d36f78c78e655b6bb64eeHarald Welte * Harald Welte <laforge@gnumonks.org> 910a907f6736864f3f60d36f78c78e655b6bb64eeHarald Welte * Jozsef Kadlecsik <kadlec@blackhole.kfki.hu> 1010a907f6736864f3f60d36f78c78e655b6bb64eeHarald Welte * 115eed48af2516ebce0412121713d285bc30edb10dRusty Russell * Based on the ipchains code by Paul Russell and Michael Neuling 125eed48af2516ebce0412121713d285bc30edb10dRusty Russell * 135eed48af2516ebce0412121713d285bc30edb10dRusty Russell * iptables -- IP firewall administration for kernels with 145eed48af2516ebce0412121713d285bc30edb10dRusty Russell * firewall table (aimed for the 2.3 kernels) 155eed48af2516ebce0412121713d285bc30edb10dRusty Russell * 165eed48af2516ebce0412121713d285bc30edb10dRusty Russell * See the accompanying manual page iptables(8) for information 175eed48af2516ebce0412121713d285bc30edb10dRusty Russell * about proper usage of this program. 185eed48af2516ebce0412121713d285bc30edb10dRusty Russell * 195eed48af2516ebce0412121713d285bc30edb10dRusty Russell * This program is free software; you can redistribute it and/or modify 205eed48af2516ebce0412121713d285bc30edb10dRusty Russell * it under the terms of the GNU General Public License as published by 215eed48af2516ebce0412121713d285bc30edb10dRusty Russell * the Free Software Foundation; either version 2 of the License, or 225eed48af2516ebce0412121713d285bc30edb10dRusty Russell * (at your option) any later version. 235eed48af2516ebce0412121713d285bc30edb10dRusty Russell * 245eed48af2516ebce0412121713d285bc30edb10dRusty Russell * This program is distributed in the hope that it will be useful, 255eed48af2516ebce0412121713d285bc30edb10dRusty Russell * but WITHOUT ANY WARRANTY; without even the implied warranty of 265eed48af2516ebce0412121713d285bc30edb10dRusty Russell * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 275eed48af2516ebce0412121713d285bc30edb10dRusty Russell * GNU General Public License for more details. 285eed48af2516ebce0412121713d285bc30edb10dRusty Russell * 295eed48af2516ebce0412121713d285bc30edb10dRusty Russell * You should have received a copy of the GNU General Public License 305eed48af2516ebce0412121713d285bc30edb10dRusty Russell * along with this program; if not, write to the Free Software 315eed48af2516ebce0412121713d285bc30edb10dRusty Russell * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 325eed48af2516ebce0412121713d285bc30edb10dRusty Russell */ 335eed48af2516ebce0412121713d285bc30edb10dRusty Russell 345eed48af2516ebce0412121713d285bc30edb10dRusty Russell#include <stdio.h> 35d8e6563430ab692cf093a81b9b6ac997739d9504Harald Welte#include <stdlib.h> 365eed48af2516ebce0412121713d285bc30edb10dRusty Russell#include <errno.h> 375eed48af2516ebce0412121713d285bc30edb10dRusty Russell#include <ip6tables.h> 3833690a1aec0b6309ff90066ca56285b6e43013f2Jan Engelhardt#include "ip6tables-multi.h" 395eed48af2516ebce0412121713d285bc30edb10dRusty Russell 404bc48331d2d1ef64ba452329f2c77137036f6437Hann-Huei Chiou#ifdef IPTABLES_MULTI 414bc48331d2d1ef64ba452329f2c77137036f6437Hann-Huei Chiouint 424bc48331d2d1ef64ba452329f2c77137036f6437Hann-Huei Chiouip6tables_main(int argc, char *argv[]) 434bc48331d2d1ef64ba452329f2c77137036f6437Hann-Huei Chiou#else 445eed48af2516ebce0412121713d285bc30edb10dRusty Russellint 455eed48af2516ebce0412121713d285bc30edb10dRusty Russellmain(int argc, char *argv[]) 464bc48331d2d1ef64ba452329f2c77137036f6437Hann-Huei Chiou#endif 475eed48af2516ebce0412121713d285bc30edb10dRusty Russell{ 485eed48af2516ebce0412121713d285bc30edb10dRusty Russell int ret; 495eed48af2516ebce0412121713d285bc30edb10dRusty Russell char *table = "filter"; 50fd1873110f8e57be578df17fc9d03536b10f4f73Jan Engelhardt struct ip6tc_handle *handle = NULL; 515eed48af2516ebce0412121713d285bc30edb10dRusty Russell 52617d3d140f4739558dce2ef8ed01aef251cf5487Jamal Hadi Salim ip6tables_globals.program_name = "ip6tables"; 537e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim ret = xtables_init_all(&ip6tables_globals, NFPROTO_IPV6); 547e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim if (ret < 0) { 557e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim fprintf(stderr, "%s/%s Failed to initialize xtables\n", 567e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim ip6tables_globals.program_name, 577e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim ip6tables_globals.program_version); 587e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim exit(1); 597e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim } 607e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim 61b79ec69027fd8b65e7eccd78a445b6665e8ad53bJan Engelhardt#if defined(ALL_INCLUSIVE) || defined(NO_SHARED_LIBS) 629a9694fbf1796a6a5011b60b2a15c01fa3c61368Maciej Żenczykowski init_extensions(); 6349d8c5d564cad70c5c1bef2d5571e8e494454210Maciej Zenczykowski init_extensions6(); 643efb6ead2e51fe1eca55bcb2b06afb4dc4b8cb7cHarald Welte#endif 653efb6ead2e51fe1eca55bcb2b06afb4dc4b8cb7cHarald Welte 665eed48af2516ebce0412121713d285bc30edb10dRusty Russell ret = do_command6(argc, argv, &table, &handle); 671c9015b2cb483678f153121255e10ec0bbfde3e6Jan Engelhardt if (ret) { 681c9015b2cb483678f153121255e10ec0bbfde3e6Jan Engelhardt ret = ip6tc_commit(handle); 691c9015b2cb483678f153121255e10ec0bbfde3e6Jan Engelhardt ip6tc_free(handle); 701c9015b2cb483678f153121255e10ec0bbfde3e6Jan Engelhardt } 715eed48af2516ebce0412121713d285bc30edb10dRusty Russell 726e70f46f2a146bb7c657f71724c999147a5925dcPablo Neira Ayuso if (!ret) { 736e70f46f2a146bb7c657f71724c999147a5925dcPablo Neira Ayuso if (errno == EINVAL) { 746e70f46f2a146bb7c657f71724c999147a5925dcPablo Neira Ayuso fprintf(stderr, "ip6tables: %s. " 756e70f46f2a146bb7c657f71724c999147a5925dcPablo Neira Ayuso "Run `dmesg' for more information.\n", 766e70f46f2a146bb7c657f71724c999147a5925dcPablo Neira Ayuso ip6tc_strerror(errno)); 776e70f46f2a146bb7c657f71724c999147a5925dcPablo Neira Ayuso } else { 786e70f46f2a146bb7c657f71724c999147a5925dcPablo Neira Ayuso fprintf(stderr, "ip6tables: %s.\n", 796e70f46f2a146bb7c657f71724c999147a5925dcPablo Neira Ayuso ip6tc_strerror(errno)); 806e70f46f2a146bb7c657f71724c999147a5925dcPablo Neira Ayuso } 816e70f46f2a146bb7c657f71724c999147a5925dcPablo Neira Ayuso } 825eed48af2516ebce0412121713d285bc30edb10dRusty Russell 835eed48af2516ebce0412121713d285bc30edb10dRusty Russell exit(!ret); 845eed48af2516ebce0412121713d285bc30edb10dRusty Russell} 85