dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra/*
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * CDDL HEADER START
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra *
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * The contents of this file are subject to the terms of the
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * Common Development and Distribution License (the "License").
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * You may not use this file except in compliance with the License.
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra *
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * or http://www.opensolaris.org/os/licensing.
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * See the License for the specific language governing permissions
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * and limitations under the License.
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra *
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * When distributing Covered Code, include this CDDL HEADER in each
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * If applicable, add the following below this CDDL HEADER, with the
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * fields enclosed by brackets "[]" replaced with your own identifying
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * information: Portions Copyright [yyyy] [name of copyright owner]
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra *
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * CDDL HEADER END
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra/*
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * Use is subject to license terms.
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#ifndef _ILBADM_H
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#define _ILBADM_H
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#ifdef __cplusplus
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misraextern "C" {
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#endif
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#include <stdio.h>
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#include <sys/list.h>
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#include <net/if.h>
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#include <stdarg.h>
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#include <inttypes.h>
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#include <libilb.h>
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#include <libintl.h>
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#include <locale.h>
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#define ILBADM_VERSION "1.0"
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#define ILBADM_COPYRIGHT \
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra "Copyright 2009 Sun Microsystems, Inc. All rights reserved.\n" \
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra "Use is subject to license terms.\n"
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra/*
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * flag values
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#define OPT_VALUE_LIST 0x0001
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#define OPT_IP_RANGE 0x0002
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#define OPT_PORTS 0x0004
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#define OPT_PORTS_ONLY 0x0008
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#define OPT_NAT 0x0010
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#define OPT_NUMERIC_ONLY 0x0020
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#define ILBD_BAD_VAL (-1)
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#define ILBADM_LIST_FULL 0x0001
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#define ILBADM_LIST_PARSE 0x0002
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#define ILBADM_LIST_ENABLED 0x0004
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#define ILBADM_LIST_NOENABLED (~ILBADM_LIST_ENABLED)
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#define ILBADM_LIST_DISABLED 0x0008
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#define ILBADM_LIST_NODISABLED (~ILBADM_LIST_DISABLED)
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#define ILBADM_IMPORT_PRESERVE 0x1000
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#define V6_ADDRONLY 0x1 /* don't print surrounding "[]"s */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#define ILB_SRVID_SZ (ILB_NAMESZ - 5)
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#define ILBD_NAMESZ ILB_NAMESZ
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#define ILB_MAX_PORT UINT16_MAX
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misratypedef enum {
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_OK = 0,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_ASSIGNREQ, /* assignment '=' required */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_EINVAL, /* invalid value */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_ENOMEM, /* malloc failed */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_ENOOPTION, /* mandatory option missing */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_ENOPROTO, /* protocol not found in database */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_ENOPROXY, /* proxy-src is missing */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_ENOSERVICE, /* servicename not found in database */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_ENOSGNAME, /* servergroup name missing */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_ENORULE, /* rulename missing or no such rule */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_ENOSERVER, /* rulename missing or no such rule */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_EXPORTFAIL, /* too little space to do export servergroup */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_FAIL, /* processing of command failed */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_HCPRINT, /* failed to print healthcheck */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_INVAL_ADDR, /* invalid address */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_INVAL_AF, /* invalid address family */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_INVAL_ALG, /* LB algorithm failure */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_INVAL_ARGS, /* invalid arguments to command */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_INVAL_COMMAND, /* invalid command */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_INVAL_KEYWORD, /* invalid keyword */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_INVAL_OPER, /* invalid operation type */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_INVAL_PORT, /* invalid value specified for port */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_INVAL_PROXY, /* proxy-src not allowed */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_INVAL_SYNTAX, /* syntax error */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_INVAL_SRVID, /* server id is invalid (missing "_" ?) */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_LIBERR, /* translation of libilb errors. We also */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra /* set it in ilbadm fuctions to indicate */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra /* printing of non-generic error messages */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_NORECURSIVE, /* recursive import not allowed */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_TOOMANYIPADDR, /* too many addresses */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILBADM_NOKEYWORD_VAL /* no value specified for a keyword */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra} ilbadm_status_t;
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misratypedef enum {
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILB_KEY_BAD = -1,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILB_KEY_SERVER,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILB_KEY_SERVRANGE, /* pseudo-key for SG creation */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILB_KEY_SERVERID,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILB_KEY_VIP,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILB_KEY_PORT,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILB_KEY_PROTOCOL,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILB_KEY_IPVERSION,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILB_KEY_ALGORITHM,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILB_KEY_TYPE,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILB_KEY_SERVERGROUP,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILB_KEY_HEALTHCHECK,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILB_KEY_HCPORT,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILB_KEY_SRC,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILB_KEY_STICKY,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILB_KEY_CONNDRAIN, /* otional timers ... */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILB_KEY_NAT_TO,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILB_KEY_STICKY_TO,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILB_KEY_HC_TEST,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILB_KEY_HC_COUNT,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILB_KEY_HC_INTERVAL,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ILB_KEY_HC_TIMEOUT
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra} ilbadm_key_code_t;
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra/*
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * we need a few codes for commands, can't use libilb ones
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misratypedef enum {
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra cmd_create_sg,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra cmd_add_srv,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra cmd_rem_srv,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra cmd_enable_rule,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra cmd_disable_rule,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra cmd_enable_server,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra cmd_disable_server
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra} ilbadm_cmd_t;
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra/* filched from snoop_ether.c */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misratypedef struct val_type {
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra int v_type;
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra char v_name[20];
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra char v_alias[8]; /* undocumented */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra} ilbadm_val_type_t;
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misratypedef struct key_names {
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ilbadm_key_code_t k_key;
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra char k_name[20];
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra char k_alias[12]; /* undocumented */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra} ilbadm_key_name_t;
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misratypedef struct servnode {
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra list_node_t s_link;
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ilb_server_data_t s_spec;
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra} ilbadm_servnode_t;
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misratypedef struct sgroup {
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra list_t sg_serv_list; /* list of servnode_t elements */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra int sg_count;
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra char *sg_name;
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra} ilbadm_sgroup_t;
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misratypedef struct cmd_hlp {
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra char *h_help;
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra} ilbadm_cmd_help_t;
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misratypedef ilbadm_status_t (* cmdfunc_t)(int, char **);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misratypedef struct cmd_names {
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra char c_name[25];
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra char c_alias[20]; /* undocumented */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra cmdfunc_t c_action;
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ilbadm_cmd_help_t *c_help; /* for "usage" */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra} ilbadm_cmd_desc_t;
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_add_server_to_group(int, char **);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_create_servergroup(int, char **);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_destroy_servergroup(int, char **);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_rem_server_from_group(int, char **);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_create_rule(int, char **);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_destroy_rule(int, char **);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_enable_rule(int, char **);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_disable_rule(int, char **);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_show_server(int, char **);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_enable_server(int, char **);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_disable_server(int, char **);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_show_servergroups(int, char **);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_show_rules(int, char **);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_show_stats(int, char **);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_create_hc(int, char **);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_destroy_hc(int, char **);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_show_hc(int, char **);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_show_hc_result(int, char **);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_noimport(int, char **);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_show_nat(int, char **);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_show_persist(int, char **);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t i_parse_optstring(char *, void *, ilbadm_key_name_t *,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra int, int *);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_servnode_t *i_new_sg_elem(ilbadm_sgroup_t *);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_import(int, int, char *[], int);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_export(int, char *[]);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_export_servergroups(ilb_handle_t h, FILE *);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_export_hc(ilb_handle_t h, FILE *);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_export_rules(ilb_handle_t h, FILE *);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t i_check_rule_spec(ilb_rule_data_t *);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrailbadm_status_t ilbadm_set_netmask(char *, ilb_ip_addr_t *, int);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misraint ilbadm_mask_to_prefixlen(ilb_ip_addr_t *);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misravoid print_cmdlist_short(char *, FILE *);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misraextern int ilb_cmp_ipaddr(ilb_ip_addr_t *, ilb_ip_addr_t *,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra longlong_t *);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misravoid ip2str(ilb_ip_addr_t *, char *, size_t, int);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrachar *i_str_from_val(int, ilbadm_val_type_t *);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrachar *ilbadm_key_to_opt(ilbadm_key_code_t);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misravoid Usage(char *);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misravoid unknown_opt(char **, int);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misraconst char *ilbadm_errstr(ilbadm_status_t);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misravoid ilbadm_err(const char *format, ...);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#ifdef __cplusplus
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra}
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#endif
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra#endif /* _ILBADM_H */