/*
 * 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/xport/RCS/xport.h,v $
 *    $Header: /afs/net.mit.edu/tools/src/xport/RCS/xport.h,v 1.1 90/08/15 01:13:25 tom Exp Locker: tom $
 *    $Author: tom $
 *    $Locker: tom $
 *    $Log:	xport.h,v $
 * 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 _port
{
  struct _meter astatus;
  struct _meter lstatus;
  struct _meter nstatus;
  int           portnum;
  int           boardnum;
  unsigned long update;
  unsigned long pkts;
  unsigned long xmit_coll;
  unsigned long recv_coll;
  unsigned long pkt_rate;
  unsigned long xmit_coll_rate;
  unsigned long recv_coll_rate;
};

struct _board
{
  char   *name;
  int    nports;
  struct _port port[20];
};

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

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


/*
 * display modes 
 */

#define DISPLAY_STATUS  0
#define DISPLAY_TRAFFIC 1

#define SUCCESS 0
#define ERROR   -1
#define MAX_BOARDS 10

/*
 * value codes 
 */

#define DEVICE_RESTART 0
#define ADMIN_OFF      1
#define ADMIN_ON       2
#define LINK_INACTIVE  1
#define LINK_ACTIVE    2
#define LINK_NOSUPP    3
#define NETWORK_ACTIVE 1
#define NETWORK_SEG    2


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    save_text();
void    really_save_text();
void    set_mode();
void    really_set_mode();
void    check_menu();
void    uncheck_menu();
void    destroy_widget();
void    set_protect();
void    stat_device();
void    stat_board();
void    stat_port();
void    set_port();
void    explode();
void    restart();
void    quit();

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

void    increment_number();
void    decrement_number();

char *do_device_stats();
char *do_board_stats();
char *do_port_stats();

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

extern struct _board board[];
extern struct in_addr addr;
extern char *dsp_mode_labels[];
extern char *community;
extern char *sysdesc;
extern int num_dsp_modes;
extern int dsp_mode;
extern int nboards;
extern int protect;
extern int update;

char   *get_category();
char   *get_route_addr();
extern struct _category device_type[];
extern struct _category mpboard_type[];
extern struct _category spboard_type[];
extern struct _category media_type[];
extern struct _category redundant_type[];
extern struct _category redundant_status[];

extern objident vSysDescr;
extern objident vNumBoards;

extern objident vDeviceType;
extern objident vDeviceName;
extern objident vDeviceIPAddress;
extern objident vDeviceMACAddress;
extern objident vDeviceMACType;
extern objident vDeviceSlots;
extern objident vDeviceOccSlots;
extern objident vDevicePortsOn;
extern objident vDevicePorts;
extern objident vDeviceTotalPkts;
extern objident vDeviceXmitColls;
extern objident vDeviceRecColls;
extern objident vDeviceRestart;
extern objident vDeviceResetCounter;
extern objident vDeviceRedundantCts;
extern objident vDeviceTimeBase;

extern objident vBoardName;
extern objident vBoardType;
extern objident vBoardTotalPorts;
extern objident vBoardPortsOn;
extern objident vBoardTotalPkts;
extern objident vBoardXmitColls;
extern objident vBoardRecColls;

extern objident vPortMediaType;
extern objident vPortAdminStatus;
extern objident vPortLinkStatus;
extern objident vPortNetworkStatus;
extern objident vPortTotalPkts;
extern objident vPortXmitColls;
extern objident vPortRecColls;
extern objident vPortRedundantCt;
extern objident vPortRedundantType;
extern objident vPortRedundantStatus;

