/*
 * This file contains the bitmap sequence for the port explosion.
 *
 * Copyright 1990 by the Massachusetts Institute of Technology.
 *
 * For copying and distribution information, please see the file
 * <mit-copyright.h>.
 *
 * Tom Coppeto
 * MIT Network Services
 * 8 August 1990
 *
 *    $Source: /afs/net.mit.edu/tools/src/xinterface/RCS/xport.h,v $
 *    $Header: /afs/net.mit.edu/tools/src/xinterface/RCS/xport.h,v 1.2 91/02/21 13:49:42 tom Exp $
 *    $Author: tom $
 *    $Locker:  $
 *    $Log:	xport.h,v $
 * Revision 1.2  91/02/21  13:49:42  tom
 * *** empty log message ***
 * 
 * Revision 1.1  90/08/15  01:13:25  tom
 * Initial revision
 * 
 */

#include <stdio.h>
#include <ctype.h>
#include <strings.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netdb.h>
#include <sys/socket.h>
#include <arpa/snmp/snmp_hs.h>


struct _meter
{
  int     status;
  caddr_t widget;
};

struct _interface
{
  char           *descr;
  char           *name;
  int            index;
  int            addr[4];
  int            type;
  int            mtu;
  int            speed;
  int            lastchanged;
  struct _meter  admin;
  struct _meter  oper;
  struct _meter  gage;
};

struct _menu
{
  void (*callback)();
  char *resource;
  int  check;
};


struct _vendor
{
  char *name;
  int  id;
};


#define SUCCESS   0
#define ERROR    -1
#define MAX_INTS 100

caddr_t make_snmp_query();
caddr_t make_snmp_next();
caddr_t *make_lots_o_snmp_queries();
caddr_t *make_lots_o_snmp_nexts();

void    change_community();
void    really_change_community();
void    change_update();
void    really_change_update_box();

void    set_protect();
void    set_interface();
void    set_mode();

void    save_text();
void    really_save_text();
void    destroy_widget();
void    restore_toggle();
void    check_menu();
void    uncheck_menu();
void    explode();
void    quit();

void    make_text_popup();
void    make_prompt_popup();
void    make_label_popup();
void    make_number_popup();

void    increment_number();
void    decrement_number();

void    stat_status();
void    stat_interface();
void    stat_ifstats();
void    stat_ifaddr();
void    stat_ifroute();
void    stat_ifmisc();
void    stat_address();
void    stat_ip();
void    stat_icmp();
void    stat_udp();
void    stat_tcp();
void    stat_memory();

void    info_boot();
void    info_author();

void do_update_status();
char *do_interface_stats();
char *do_address_stats();
char *do_ifstats();
char *do_ifaddr();
char *do_ifroute();
char *do_ifmisc();
char *do_ip_stats();
char *do_icmp_stats();
char *do_udp_stats();
char *do_tcp_stats();
char *do_cisco_memory();
char *do_cisco_boot_info();

char *make_phys_address();
char *elapsed_time();
char *format_number();

extern struct _interface interface[];
extern struct in_addr addr;
extern char   *community;
extern char   *sysdesc;
extern int    update;
extern int    nints;
extern int    protect;
extern int    vendor;

char *get_interface_type();
char *get_route_protocol();
char *get_route_type();
char *get_tcp_timeout_algorithm();
char *get_tcp_connection_state();
char *get_route_addr();
char *get_servname();
char *get_hostname();

extern char   *interface_type[];
extern char   *route_protocol[];
extern char   *route_type[];
extern char   *tcp_timeout_algorithm[];
extern char   *tcp_connection_state[];

extern int    num_interface_types;
extern int    num_route_protocols;
extern int    num_route_types;
extern int    num_tcp_timeout_algorithms;
extern int    num_tcp_connection_states;

extern int    num_stats_menus;
extern int    num_options_menus;
extern int    num_bstats_menus;
extern int    num_info_menus;
extern struct _menu stats_menu[];
extern struct _menu options_menu[];
extern struct _menu bstats_menu[];
extern struct _menu info_menu[];

extern struct _vendor vendors[];

/*
 * vendors (we made need better resolution)
 */

#define CISCO 1
#define KINETICS 2

extern objident vSysDescr;
extern objident vSysUptime;
extern objident vIfNumber;
extern objident vIfDescr;
extern objident vIfType;
extern objident vIfMtu;
extern objident vIfSpeed;
extern objident vIfPhysAddress;
extern objident vIfAdminStatus;
extern objident vIfOperStatus;
extern objident vIfLastChange;
extern objident vIfInOctets;
extern objident vIfInUcastPackets;
extern objident vIfInNUcastPackets;
extern objident vIfInDiscards;
extern objident vIfInErrors;
extern objident vIfInUnknownProtos;
extern objident vIfOutOctets;
extern objident vIfOutUcastPackets;
extern objident vIfOutNUcastPackets;
extern objident vIfOutDiscards;
extern objident vIfOutErrors;
extern objident vIfOutQLen;
extern objident vAtIfIndex;
extern objident vAtPhysAddress;
extern objident vIPForwarding;
extern objident vIPDefaultTTL;
extern objident vIPInReceives;
extern objident vIPInHdrErrors;
extern objident vIPInAddrHeaders;
extern objident vIPForwDatagrams;
extern objident vIPInUnknownProtos;
extern objident vIPInDiscards;
extern objident vIPInDelivers;
extern objident vIPOutRequests;
extern objident vIPOutDiscards;
extern objident vIPOutNoRoutes;
extern objident vIPReasmTimeout;
extern objident vIPReasmReqds;
extern objident vIPReasmOKs;
extern objident vIPReasmFails;
extern objident vIPFragOKs;
extern objident vIPFragFails;
extern objident vIPFragCreates;
extern objident vIAIfAddr;
extern objident vIAIfIndex;
extern objident vIANetMask;
extern objident vIABcastAddr;
extern objident vIPRtDest;
extern objident vIPRtIfIndex;
extern objident vIPRtMetric1;
extern objident vIPRtMetric2;
extern objident vIPRtMetric3;
extern objident vIPRtMetric4;
extern objident vIPRtNextHop;
extern objident vIPRtProto;
extern objident vIPRtType;
extern objident vIPRtAge;
extern objident vICMPInMsgs;
extern objident vICMPInErrors;
extern objident vICMPInDestUnreachs;
extern objident vICMPInTimeExds;
extern objident vICMPInParmProbs;
extern objident vICMPInSrcQuenchs;
extern objident vICMPInRedirects;
extern objident vICMPInEchos;
extern objident vICMPInEchoReps;
extern objident vICMPInTimestamps;
extern objident vICMPInTimestampReps;
extern objident vICMPInAddrmasks;
extern objident vICMPInAddrMaskReps;
extern objident vICMPOutMsgs;
extern objident vICMPOutErrors;
extern objident vICMPOutDestUnreachs;
extern objident vICMPOutTimeExds;
extern objident vICMPOutParmProbs;
extern objident vICMPOutSrcQuenchs;
extern objident vICMPOutRedirects;
extern objident vICMPOutEchos;
extern objident vICMPOutEchoReps;
extern objident vICMPOutTimestamps;
extern objident vICMPOutTimestampReps;
extern objident vICMPOutAddrmasks;
extern objident vICMPOutAddrMaskReps;
extern objident vTCPRtoAlgorithm;
extern objident vTCPRtoMin;
extern objident vTCPRtoMax;
extern objident vTCPMaxConn;
extern objident vTCPActiveOpens;
extern objident vTCPPassiveOpens;
extern objident vTCPAttemptFails;
extern objident vTCPEstabResets;
extern objident vTCPCurrEstab;
extern objident vTCPInSegs;
extern objident vTCPOutSegs;
extern objident vTCPRetransSegs;
extern objident vTCPConnState;
extern objident vTCPConnLocalAddress;
extern objident vTCPConnLocalPort;
extern objident vTCPConnRemAddress;
extern objident vTCPConnRemPort;
extern objident vUDPInDatagrams;
extern objident vUDPNoPorts;
extern objident vUDPInErrors;
extern objident vUDPOutDatagrams;
extern objident vCiscoRomID ;
extern objident vCiscoWhyReload;
extern objident vCiscoHostName;
extern objident vCiscoDomainName;
extern objident vCiscoBootHost;
extern objident vCiscoNetConfigIP;
extern objident vCiscoNetConfigName;
extern objident vCiscoNetConfigSet;
extern objident vCiscoHostConfigIP;
extern objident vCiscoHostConfigName;
extern objident vCiscoHostConfigSet;
extern objident vCiscoFreeMem;
extern objident vCiscoBufferElFree;
extern objident vCiscoBufferElMax;
extern objident vCiscoBufferElHit;
extern objident vCiscoBufferElMiss;
extern objident vCiscoBufferElCreate;
extern objident vCiscoBufferSmSize;
extern objident vCiscoBufferSmTotal;
extern objident vCiscoBufferSmFree;
extern objident vCiscoBufferSmMax;
extern objident vCiscoBufferSmHit;
extern objident vCiscoBufferSmMiss;
extern objident vCiscoBufferSmTrim;
extern objident vCiscoBufferSmCreate;
extern objident vCiscoBufferMdSize;
extern objident vCiscoBufferMdTotal;
extern objident vCiscoBufferMdFree;
extern objident vCiscoBufferMdMax;
extern objident vCiscoBufferMdHit;
extern objident vCiscoBufferMdMiss;
extern objident vCiscoBufferMdTrim;
extern objident vCiscoBufferMdCreate;
extern objident vCiscoBufferBgSize;
extern objident vCiscoBufferBgTotal;
extern objident vCiscoBufferBgFree;
extern objident vCiscoBufferBgMax;
extern objident vCiscoBufferBgHit;
extern objident vCiscoBufferBgMiss;
extern objident vCiscoBufferBgTrim;
extern objident vCiscoBufferBgCreate;
extern objident vCiscoBufferLgSize;
extern objident vCiscoBufferLgTotal;
extern objident vCiscoBufferLgFree;
extern objident vCiscoBufferLgMax;
extern objident vCiscoBufferLgHit;
extern objident vCiscoBufferLgMiss;
extern objident vCiscoBufferLgTrim;
extern objident vCiscoBufferLgCreate;
extern objident vCiscoBufferFail;
extern objident vCiscoBufferNoMem;
extern objident vCiscoIfHardType;
extern objident vCiscoIfLineProt;
extern objident vCiscoIfLastIn;
extern objident vCiscoIfLastOut;
extern objident vCiscoIfLastOutHang;
extern objident vCiscoIfInBitsSec;
extern objident vCiscoIfInPktsSec;
extern objident vCiscoIfOutBitsSec;
extern objident vCiscoIfOutPktsSec;
extern objident vCiscoIfInRunts;
extern objident vCiscoIfInGiants;
extern objident vCiscoIfInCRC;
extern objident vCiscoIfInFrame;
extern objident vCiscoIfInOverrun;
extern objident vCiscoIfInIgnored;
extern objident vCiscoIfInAbort;
extern objident vCiscoIfResets;
extern objident vCiscoIfRestarts;
extern objident vCiscoIfKeep;
extern objident vCiscoIfReason;
extern objident vCiscoIPAddrHow;
extern objident vCiscoIPAddrWho;
extern objident vCiscoIPAddrHelper;
extern objident vCiscoIPAddrHelper;
extern objident vCiscoIPSecurity;
extern objident vCiscoIPRedirects;
extern objident vCiscoIPUnreachable;
extern objident vCiscoIPRtMask;
extern objident vCiscoIPRtCount;
extern objident vCiscoIPRtUses;
