/* FILENAME: tcpdata.h
 *
 * Copyright 1997-2011 By InterNiche Technologies Inc. All rights reserved.
 *
 * Definitions of CLI option data structure for the default set of CLI 
 * commands available in the InterNiche TCP/IP stack.  This file is only
 * intended for inclusion in tcpdata.c.
 *
 * Module: TCP/IP stack
 *
 * ROUTINES:
 *
 * PORTABLE: yes
 *
 */

#ifndef TCPDATA_H
#define TCPDATA_H       1

#define EMBTCP_PRODUCT_CODE      "D741-0604-03B7-F195"

/* Network free buffer queue descriptor */
typedef struct net_bufq
{
   int32_t bufnum;            /* initial number of buffers in the queue */
   int32_t bufsiz;            /* size of each buffer */        
} NET_BUFQ;


/* 
 * list of options (e.g., -a, -b, ...) allowed with CLI commands 
 */
/* "help" */
struct cli_parm help_parms[] = {
   { 'c', CLI_STRING },       /* command name */
   { 'm', CLI_STRING },       /* menu name */
};

/* "iface" */
struct cli_parm iface_parms[] = {
   { 'i', CLI_UINT },         /* interface number */
   { 'm', CLI_UINT },         /* MTU */
};

/* "linkstats" */
struct cli_parm linkstats_parms[] = {
   { 'i', CLI_UINT },         /* interface number */
};

/* "netstat" */
struct cli_parm netstat_parms[] = {
   { 'c', CLI_NONE },         /* sockets */
   { 'm', CLI_NONE },         /* mbuf status */
   { 'p', CLI_STRING },       /* protocol name */
   { 'q', CLI_NONE },         /* queue status */
   { 's', CLI_NONE },         /* (protocol) statistics */
};

/* "setip" */
struct cli_parm setip_parms[] = {
   { 'a', CLI_IPADDR },       /* IP address */
   { 'e', CLI_NONE },         /* restore "static" address configuration */
   { 'g', CLI_IPADDR },       /* gateway IP address */
   { 'i', CLI_UINT },         /* interface number */
   { 'o', CLI_NONE },         /* obtain an IPv4 address */
   { 'p', CLI_STRING },       /* set of address configuration protocols */
   { 'r', CLI_NONE },         /* release an IPv4 address */
   { 's', CLI_IPADDR },       /* subnet mask */
};

/* "status" */
struct cli_parm status_parms[] = {
   { 'i', CLI_NONE },         /* IP MIB status */
   { 'm', CLI_NONE },         /* mbuf status */
   { 'q', CLI_NONE },         /* queue status */
   { 's', CLI_NONE },         /* system status */
   { 't', CLI_NONE },         /* task status */
};

/* "queues" */
struct cli_parm queues_parms[] = {
   { 'z', CLI_NONE },         /* print list */
};

/* "arp" */
struct cli_parm arp_parms[] = {
   { 'z', CLI_STRING },       /* clear statistics */
};

/* "setdnssrv" */
struct cli_parm dnssvr_parms[] = {
   { 'i', CLI_UINT },         /* DNS Server address table index */
   { 'a', CLI_IPADDR },       /* DNS Server address to add */
   { 'd', CLI_NONE },         /* delete flag */
};

/* "nslookup" */
struct cli_parm nslookup_parms[] = {
   { 'a', CLI_STRING },       /* host name string */
   { 's', CLI_NONE },         /* dump status and statistics */
};

/* "ping" */
struct cli_parm ping_parms[] = {
   { 'a', CLI_IPADDR },       /* IPv4 address (destination of ping) */
   { 'n', CLI_UINT },         /* number of pings */
   { 'l', CLI_UINT },         /* length of ping packet */
   { 's', CLI_NONE },         /* dump status and statistics */
};


/* externs */

extern int ping_init(void);
extern int dnc_init(void);

extern int cli_nt_help(void *ctx);
extern int dhcpc_netstat(void *ctx);
extern int netmain_buffers(void *ctx);
extern int netmain_iface(void *ctx);
extern int netmain_linkstats(void *ctx);
extern int netmain_mbufs(void *ctx);
extern int netmain_netstat(void *ctx);
extern int dumpqueuesCTX(void *ctx);
extern int netmain_setip(void *ctx);
extern int netmain_status(void *ctx);
extern int netdiag_arp(void *ctx);
extern int netdiag_dnssvr(void *ctx);
extern int netdiag_nslookup(void *ctx);
extern int netdiag_gratarp(void *ctx);
extern int ping_cli(void *ctx);
extern int user1_cli(void *ctx);

extern struct cli_parm help_parms[];
extern struct cli_parm iface_parms[];
extern struct cli_parm linkstats_parms[];
extern struct cli_parm netstat_parms[];
extern struct cli_parm setip_parms[];
extern struct cli_parm status_parms[];
extern struct cli_parm queues_parms[];
extern struct cli_parm arp_parms[];
extern struct cli_parm dnssvr_parms[];
extern struct cli_parm nslookup_parms[];
extern struct cli_parm ping_parms[];

#endif /* TCPDATA_H */

