summaryrefslogtreecommitdiff
path: root/ASNMP/asnmp/address.h
diff options
context:
space:
mode:
Diffstat (limited to 'ASNMP/asnmp/address.h')
-rw-r--r--ASNMP/asnmp/address.h812
1 files changed, 0 insertions, 812 deletions
diff --git a/ASNMP/asnmp/address.h b/ASNMP/asnmp/address.h
deleted file mode 100644
index a9250b8244d..00000000000
--- a/ASNMP/asnmp/address.h
+++ /dev/null
@@ -1,812 +0,0 @@
-/* -*-C++-*- */
-// $Id$
-#ifndef ADDRESS_
-#define ADDRESS_
-// ============================================================================
-//
-// = LIBRARY
-// asnmp
-//
-// = FILENAME
-// address.h
-//
-// = DESCRIPTION
-// Address class definition. Encapsulates various network
-// addresses into easy to use, safe and portable classes.
-//
-// = AUTHOR
-// Peter E Mellquist
-//
-// ============================================================================
-
-/*===================================================================
- Copyright (c) 1996
- Hewlett-Packard Company
-
- ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
- Permission to use, copy, modify, distribute and/or sell this software
- and/or its documentation is hereby granted without fee. User agrees
- to display the above copyright notice and this license notice in all
- copies of the software and any documentation of the software. User
- agrees to assume all liability for the use of the software; Hewlett-Packard
- makes no representations about the suitability of this software for any
- purpose. It is provided "AS-IS without warranty of any kind,either express
- or implied. User hereby grants a royalty-free license to any and all
- derivatives based upon this software code base.
-=====================================================================*/
-
-//----[ includes ]-----------------------------------------------------
-// ACE OS Adaption layer
-#include "ace/OS.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-#include "asnmp/smival.h"
-#include "asnmp/octet.h"
-
-//----[ enumerated types ] --------------------------------
-enum address_lengths {
- IPV4LEN=4,
- UDPIPV4LEN=6,
- IPV6LEN=16,
- UDPIPV6LEN=18,
- IPXLEN=10,
- IPXSOCKLEN=12,
- NETBIOSLEN=16,
- APPLETKLEN=3,
- DECNETLEN=2,
- MACLEN=6,
- HASH0=19,
- HASH1=13,
- HASH2=7,
- MAX_ADDR_SZ=20,
- MAX_DISPLAY_SZ=MAXHOSTNAMELEN+1
-};
-
-enum addr_type {
- type_ip,
- type_ipx,
- type_udp,
- type_ipxsock,
- type_mac,
- type_nb,
- type_atk,
- type_decnet,
- type_e164,
- type_sip, // IPv6
- type_invalid
-};
-
-// TODO: get rest of nb service types added here
-enum nb_service {
- nb_workstation = 0x0, nb_server = 0x20
-};
-
-//---[ forward declarations ]-----------------------------------------
-class GenAddress;
-class UdpAddress;
-class IpxSockAddress;
-class NetbiosAddress;
-class SIPAddress; // aka ipv6
-
-// TODO:
-// class AtmE164Address;
-
-
-//--------------------------------------------------------------------
-//----[ Address class ]-----------------------------------------------
-//--------------------------------------------------------------------
-class ACE_Export Address: public SnmpSyntax
- // = TITLE
- // Defines the member functions for the abstract base class
- // Address. An Address is a unique network endpoint.
-{
-
-public:
- virtual ~Address();
- // allow destruction of derived classes
-
- friend int operator==( const Address &lhs,const Address &rhs);
- // overloaded equivlence operator, are two addresses equal?
-
- friend int operator!=( const Address &lhs,const Address &rhs);
- // overloaded not equivlence operator, are two addresses not equal?
-
- friend int operator>( const Address &lhs,const Address &rhs);
- // overloaded > operator, is a1 > a2
-
- friend int operator>=( const Address &lhs,const Address &rhs);
- // overloaded >= operator, is a1 >= a2
-
- friend int operator<( const Address &lhs,const Address &rhs);
- // overloaded < operator, is a1 < a2
-
- friend int operator<=( const Address &lhs,const Address &rhs);
- // overloaded <= operator, is a1 <= a2
-
- friend int operator==( const Address &lhs,const char *rhs);
- // equivlence operator overloaded, are an address and a string equal?
-
- friend int operator!=( const Address &lhs,const char *rhs);
- // overloaded not equivlence operator, are an address and string not equal?
-
- friend int operator>( const Address &lhs,const char *rhs);
- // overloaded < , is an address greater than a string?
-
- friend int operator>=( const Address &lhs,const char *rhs);
- // overloaded >=, is an address greater than or equal to a string?
-
- friend int operator<( const Address &lhs,const char *rhs);
- // overloaded < , is an address less than a string?
-
- friend int operator<=( const Address &lhs,const char *rhs);
- // overloaded <=, is an address less than or equal to a string?
-
- virtual operator const char *() const = 0;
- // overloaded const char * cast
-
- virtual int valid() const;
- // verify the is the address object constructed ok
-
- virtual void to_octet(OctetStr& octet) const = 0;
- // return a suitable buffer to contain the address
-
- virtual SmiUINT32 get_syntax() = 0;
- // (pure virtual) syntax type
-
- unsigned char& operator[]( const int position);
- // for non const [], allows reading and writing
-
- virtual char *to_string() = 0;
- // get a printable ASCII value
-
- virtual SnmpSyntax *clone() const = 0;
- // create a new instance of this Value
-
- virtual addr_type get_type() const = 0;
- // return the type of address
-
- virtual SnmpSyntax& operator=( SnmpSyntax &val) = 0;
- // overloaded assignment operator
-
- virtual unsigned int hashFunction() const { return 0;};
- // return a hash key
-
-
-protected:
- int valid_flag;
- // state of constructed object (TRUE/FALSE)
- unsigned char address_buffer[MAX_ADDR_SZ];
- // addr internal representation
-
- virtual int parse_address( const char * inaddr) =0;
- // parse the address string
- // redefined for each specific address subclass
-
- virtual void format_output() =0;
- // format the output
- // redefined for each specific address subclass
-
- void trim_white_space( char * ptr);
- // a reused trimm white space method
-};
-
-
-//-----------------------------------------------------------------------
-//---------[ IPv4 Address Class ]----------------------------------------
-//-----------------------------------------------------------------------
-class ACE_Export IpAddress : public Address
- // = TITLE
- // Defines the member functions for the concrete class IpAddress
- // An IP Version 4 Address is 4 bytes long and consists of a
- // Network, Sub Network, and host component.
-{
-public:
- IpAddress( const char *inaddr = "");
- // default construct an IP address with a string
-
- IpAddress( const IpAddress &ipaddr);
- // construct an IP address with another IP address
-
- IpAddress( const GenAddress &genaddr);
- // construct an IP address with a GenAddress
-
- ~IpAddress();
- // destructor (ensure that SnmpSyntax::~SnmpSyntax() is overridden)
-
- SnmpSyntax& operator=( SnmpSyntax &val);
- // copy an instance of this Value
-
- IpAddress& operator=( const IpAddress &ipaddress);
- // assignment to another IpAddress object overloaded
-
- // TODO: add ability to set addr given long
-
- SnmpSyntax *clone() const;
- // create a new instance of this Value
-
- char *resolve_hostname(int& was_found);
- // return the DNS Fully Qualified Domain Name (host.domain)
- // on failure returns dotted_quad string
-
- virtual char *to_string() ;
- // return string representation of object (dotted quad returned)
-
- virtual operator const char *() const;
- // const char * operator overloaded for streaming output
-
- void mask( const IpAddress& ipaddr);
- // logically AND two IPaddresses and
- // return the new one
-
- virtual addr_type get_type() const;
- // return the type
-
- virtual SmiUINT32 get_syntax();
- // syntax type
-
- int is_loopback() const;
- // is this the loopback address? 127.0.0.1/loopback/1.0.0.127.in-addr.arpa
-
- int is_multicast() const;
- // determine if this is a multicast address
-
- int is_broadcast() const;
- // determine if this a broadcast address
-
- int is_private() const;
- // per RFC 1597, private addresses are:: 10, 172.16, and 192.168.0
-
- virtual void to_octet(OctetStr& octet) const;
- // convert address into octet string format in network byte order
-
-protected:
- char output_buffer[MAX_DISPLAY_SZ]; // output buffer
-
- char iv_friendly_name_[MAX_DISPLAY_SZ];
- // friendly name storage
-
- int iv_friendly_name_status_;
- // did resolver call work? some addrs won't resolve
-
- virtual int parse_address( const char *inaddr);
- // redefined parse address
- // specific to IP addresses
-
- virtual void format_output();
- // redefined format output
- // specific to IP addresses
-
- int parse_dotted_ipstring( const char *inaddr);
- // parse a dotted string
-
- int addr_to_friendly();
- // using the currently defined address, do a gethostbyname()
- // and try to fill up the name
-
- static int resolve_to_address(const char *hostname, in_addr& quad_addr);
- // thread safe routine to lookup ip address given hostname
- // return <> 0 on error
-
- static int resolve_to_hostname(const in_addr& quad_addr, char *hostname);
- // thread safe routine to lookup name given ip address
- // return <> 0 on error
-
-};
-
-//------------------------------------------------------------------------
-//--------------[ DNS Iterator Class ]------------------------------------
-//------------------------------------------------------------------------
-
-class ACE_Export Address_Iter
- // = TITLE
- // Defines routines to obtain information on a hostname/FQDN
- // such as multiple addresses
-{
-public:
- Address_Iter(const char *hostname); // fully qualified domain name, hostname
-
- int valid() const;
- // did hostname resolve via DNS?
-
- int how_many_addresses();
- // how many addresses associated with this hostname
-
- int next(IpAddress& addr);
- // return next address
-
-private:
- Address_Iter(const Address_Iter&);
- int valid_; // ctor status
- int count_; // number of addresses
- char **entry_; // ptr to current address
- struct hostent lookupResult_;
- ACE_HOSTENT_DATA buffer_;
- int query_dns(const char *hostname);
-};
-
-//------------------------------------------------------------------------
-//---------[ UDP/IPv4 Address Class ]-------------------------------------
-//------------------------------------------------------------------------
-class ACE_Export UdpAddress : public IpAddress
- // = TITLE
- // Defines the member functions for the concrete class UdpAddress
- // A Udp Address consists of an IP Version 4 Address (IpAddress)
- // and a 2 byte unsigned port number. (see /etc/services file)
- // User Datagram Protocol (UDP) is a best effort transport
-{
-public:
- UdpAddress( const char *inaddr = "");
- // default constructor with a dotted string in the form of addr:port
-
- UdpAddress( const UdpAddress &udpaddr);
- // construct an Udp address with another Udp address
-
- UdpAddress( const GenAddress &genaddr);
- // construct a Udp address with a GenAddress
-
- UdpAddress( const IpAddress &ipaddr);
- // construct a Udp address with an IpAddress
- // default port # to zero
-
- ~UdpAddress();
- // destructor
-
- SmiUINT32 get_syntax();
- // syntax type
-
- SnmpSyntax& operator=( SnmpSyntax &val);
- // copy an instance of this Value
-
- UdpAddress& operator=( const UdpAddress &udpaddr);
- // assignment to another IpAddress object overloaded
-
- SnmpSyntax *clone() const;
- // create a new instance of this Value
-
- virtual char *to_string() ;
- // output in the form of address:port
-
- virtual operator const char *() const;
- // const char * operator overloaded for streaming output
-
- void set_port( const unsigned short p);
- // set the port number
-
- unsigned short get_port() const;
- // get the port number
-
- virtual addr_type get_type() const;
- // return the type
-
-protected:
- char output_buffer[MAX_DISPLAY_SZ];
- // output buffer
-
- virtual int parse_address( const char *inaddr);
- // redefined parse address
- // specific to IP addresses
-
- virtual void format_output();
- // redefined format output
- // specific to IP addresses
-};
-
-
-//-------------------------------------------------------------------------
-//---------[ 802.3 MAC Address Class ]-------------------------------------
-//-------------------------------------------------------------------------
-class ACE_Export MacAddress : public Address
- // = TITLE
- // Defines the member functions for the concrete class MacAddress.
- // A Media Access Control Address consists of 48 bits as defined
- // in IEEE 802.3 specifications.
-{
-public:
- MacAddress( const char *inaddr = "");
- // constructor with a string argument
-
- MacAddress( const MacAddress &macaddr);
- // constructor with another MAC object
-
- MacAddress( const GenAddress &genaddr);
- // construct a MacAddress with a GenAddress
-
- ~MacAddress();
- // destructor
-
- SmiUINT32 get_syntax();
- // syntax type
-
- SnmpSyntax& operator=( SnmpSyntax &val);
- // copy an instance of this Value
-
- MacAddress& operator=( const MacAddress &macaddress);
- // assignment to another IpAddress object overloaded
-
- SnmpSyntax *clone() const;
- // create a new instance of this Value
-
- virtual char *to_string();
- // create a string to internal class storage representing object
-
- virtual operator const char *() const;
- // const char * operator overloaded for streaming output
-
- virtual addr_type get_type() const;
- // return the type
-
- unsigned int hashFunction() const;
- // return a hash key
-
- virtual void to_octet(OctetStr& octet) const;
- // return byte array of the mac address
-
-protected:
- char output_buffer[MAX_DISPLAY_SZ];
- // output buffer containing string representation of object
-
- virtual int parse_address( const char *inaddr);
- // redefined parse address for macs
-
- virtual void format_output();
- // redefined format output for MACs
-};
-
-//------------------------------------------------------------------------
-//---------[ Netbios Address Class ]--------------------------------------
-//------------------------------------------------------------------------
-class ACE_Export NetbiosAddress : public Address
- // = TITLE
- // Defines the member functions for the concrete class NetbiosAddress.
- // The IBM/Microsoft address for NETBIOS, NETBEUI protocol transport.
-{
-public:
-
- NetbiosAddress( const char *inaddr = "");
- // default constructor with string arg
-
- NetbiosAddress( const char *inaddr, nb_service svc);
- // set name and service type
-
- NetbiosAddress( const NetbiosAddress& nbaddr);
- // copy constructor
-
- NetbiosAddress( const GenAddress& genaddr);
- // construct with a GenAddress
-
- ~NetbiosAddress();
-
- virtual char *to_string();
-
- NetbiosAddress& operator=( const NetbiosAddress &nbaddr);
-
- nb_service get_service_type() const;
- // retrieve the network service type
-
- void set_service_type(nb_service nbservice);
- // set the service type (workstation, server, etc)
-
- virtual operator const char *() const;
- // const char * operator overloaded for streaming output
-
- virtual SmiUINT32 get_syntax();
- // syntax type
-
- SnmpSyntax& operator=( SnmpSyntax &val);
- // copy an instance of this Value
-
- SnmpSyntax *clone() const;
- // create a new instance of this Value
-
- virtual void to_octet(OctetStr& octet) const;
- // output byte buffer containing netbios name
-
-protected:
- void InitNBAddr(const char *inaddr);
- char output_buffer[MAX_DISPLAY_SZ];
-
- virtual void format_output();
- // output buffer to hold string representation
- virtual int parse_address( const char *inaddr);
- virtual addr_type get_type() const;
-};
-
-//------------------------------------------------------------------------
-//---------[ DecNet Address Class ]---------------------------------------
-//------------------------------------------------------------------------
-class ACE_Export DecNetAddress : public Address
- // = TITLE
- // Defines the member functions for the concrete class DecNetAddress.
- // DecNet Phase ? address consists of two octets (CISCO-TC.my)
-{
- public:
- DecNetAddress( const char *inaddr = "");
- // default constructor with string arg
-
- DecNetAddress( const DecNetAddress& decaddr);
- // copy constructor
-
- DecNetAddress( const GenAddress& genaddr);
- // construct with a GenAddress
-
- ~DecNetAddress();
-
- virtual char *to_string();
-
- DecNetAddress& operator=( const DecNetAddress &decaddr);
-
- virtual void to_octet(OctetStr& octet) const;
- // convert address into octet string format 2 bytes of decnet address
-
- virtual operator const char *() const;
- // const char * operator overloaded for streaming output
-
- virtual SmiUINT32 get_syntax();
- // syntax type
-
- SnmpSyntax& operator=( SnmpSyntax &val);
- // copy an instance of this Value
-
- SnmpSyntax *clone() const;
- // create a new instance of this Value
-
- protected:
- virtual int parse_address( const char *inaddr);
- virtual addr_type get_type() const;
- virtual void format_output();
- char output_buffer[MAX_DISPLAY_SZ];
-};
-
-//------------------------------------------------------------------------
-//---------[ AppleTalk Address Class ]------------------------------------
-//------------------------------------------------------------------------
-class ACE_Export AppleTalkAddress : public Address
- // = TITLE
- // Defines the member functions for the concrete class DecNetAddress.
- // DecNet Phase ? address consists of two octets (CISCO-TC.my)
-{
- public:
- AppleTalkAddress( const char *inaddr = "");
- // default constructor with string arg
-
- AppleTalkAddress( const AppleTalkAddress& atkaddr);
- // copy constructor
-
- AppleTalkAddress( const GenAddress& genaddr);
- // construct with a GenAddress
-
- ~AppleTalkAddress();
-
- virtual char *to_string();
-
- AppleTalkAddress& operator=( const AppleTalkAddress &atkaddr);
-
- virtual void to_octet(OctetStr& octet) const;
- // convert address into octet string format 3 bytes of atk address
-
- char get_host_address() const;
- // get the host part of the address
-
- void set_host_address(const char);
- // set the host part of the address
-
- short get_net_address() const;
- // get the 2 byte atk network address
-
- void set_net_address(const short atknet);
- // set the host 2 byte atk network address
-
- virtual operator const char *() const;
- // const char * operator overloaded for streaming output
-
- virtual SmiUINT32 get_syntax();
- // syntax type
-
- SnmpSyntax& operator=( SnmpSyntax &val);
- // copy an instance of this Value
-
- SnmpSyntax *clone() const;
- // create a new instance of this Value
-
- private:
- virtual int parse_address( const char *inaddr);
- virtual addr_type get_type() const;
- virtual void format_output();
- char output_buffer[MAX_DISPLAY_SZ];
-};
-
-//------------------------------------------------------------------------
-//---------[ IPX Address Class ]------------------------------------------
-//------------------------------------------------------------------------
-class ACE_Export IpxAddress : public Address
- // = TITLE
- // Defines the member functions for the concrete class IpxAddress.
- // Novell's IPX (version ?) network protocol endpoint
-{
-public:
- IpxAddress( const char *inaddr = "");
- // default constructor with a string arg
-
- IpxAddress( const IpxAddress &ipxaddr);
- // constructor with another ipx object
-
- IpxAddress( const GenAddress &genaddr);
- // construct with a GenAddress
-
- ~IpxAddress();
- // destructor
-
- virtual SmiUINT32 get_syntax();
- // syntax type
-
- SnmpSyntax& operator=( SnmpSyntax &val);
- // copy an instance of this Value
-
- IpxAddress& operator=( const IpxAddress &ipxaddress);
- // assignment to another IpxAddress object overloaded
-
- int get_hostid( MacAddress& mac);
- // get the host id portion of an ipx address
-
- SnmpSyntax *clone() const;
- // create a new instance of this Value
-
- virtual char *to_string();
- // create string represtation of object value
-
- virtual operator const char *() const;
- // const char * operator overloaded for streaming output
-
- virtual addr_type get_type() const;
- // return the type
-
- virtual void to_octet(OctetStr& octet) const;
- // return byte sequence containing ipx address
-
-protected:
- char separator;
- // ipx format separator {:,/}
-
- char output_buffer[MAX_DISPLAY_SZ];
- // output buffer to hold string representation
-
- virtual int parse_address( const char *inaddr);
- // redefined parse address for ipx strings
-
- virtual void format_output();
- // redefined format output for ipx strings
- // uses same separator as when constructed
-};
-
-
-
-//------------------------------------------------------------------------
-//---------[ IpxSock Address Class ]--------------------------------------
-//------------------------------------------------------------------------
-class ACE_Export IpxSockAddress : public IpxAddress
- // = TITLE
- // Defines the member functions for the concrete class IpxAddress.
- // Novell's IPX (version ?) network protocol endpoint
-{
-public:
- IpxSockAddress( const char *inaddr = "");
- // constructor with a dotted string
-
- IpxSockAddress( const IpxSockAddress &ipxaddr);
- // construct an Udp address with another Udp address
-
- IpxSockAddress( const GenAddress &genaddr);
- //constructor with a GenAddress
-
- IpxSockAddress( const IpxAddress &ipxaddr);
- //constructor with a IpxAddress
- // default socket # is 0
-
- ~IpxSockAddress();
- // destructor
-
- virtual SmiUINT32 get_syntax();
- // syntax type
-
- SnmpSyntax& operator=( SnmpSyntax &val);
- // copy an instance of this Value
-
- IpxSockAddress& operator=( const IpxSockAddress &ipxaddr);
- // assignment to another IpxAddress object overloaded
-
- SnmpSyntax *clone() const;
- // create a new instance of this Value
-
- void set_socket( const unsigned short s);
- // set the socket number
-
- unsigned short get_socket() const;
- // get the socket number
-
- virtual char *to_string();
- // create string representation of object value
-
- virtual operator const char *() const;
- // const char * operator overloaded for streaming output
-
- virtual addr_type get_type() const;
- // return the type
-
-protected:
- char output_buffer[MAX_DISPLAY_SZ];
- // output buffer to hold string representation of object
-
- virtual int parse_address( const char *inaddr);
- // redefined parse address for ipx strings
-
- virtual void format_output();
- // redefined format output
- // specific to IP addresses
-};
-
-//-------------------------------------------------------------------------
-//--------[ Generic Address ]----------------------------------------------
-//-------------------------------------------------------------------------
-class ACE_Export GenAddress : public Address
- // = TITLE
- // Defines the member functions for the concrete class GenAddress.
- // This class attempts to determine an address type given a char string.
-{
-public:
- GenAddress( const char *addr = "");
- // constructor with a string argument
-
- GenAddress( const Address &addr);
- // constructor with an Address
-
- GenAddress( const GenAddress &addr);
- // constructor with another GenAddress
-
- ~GenAddress();
- // destructor
-
- SmiUINT32 get_syntax();
- // get the snmp syntax of the contained address
-
- SnmpSyntax *clone() const;
- // create a new instance of this Value
-
- GenAddress& operator=( const GenAddress &addr);
- // assignment of a GenAddress
-
- SnmpSyntax& operator=( SnmpSyntax &val);
- // copy an instance of this Value
-
- virtual char *to_string();
- // string representation of object value
-
- virtual operator const char *() const;
- // const char * operator overloaded for streaming output
-
- virtual addr_type get_type() const;
- // return the type
-
- virtual void to_octet(OctetStr& octet) const;
- // return the address as a octet sequence
-
-protected:
- Address *address;
- // pointer to a a concrete address
-
- char output_buffer[MAX_DISPLAY_SZ];
- // output buffer of objects value
-
- virtual int parse_address( const char *addr);
- // redefined parse address for macs
-
- virtual void format_output();
- // format output for a generic address
-
- void init_smi();
- // initialize smi data structure
-};
-
-#endif //_ADDRESS