1: 
   2: 
   3: /*********************
   4: *                    *
   5: *  PROJECT INCLUDES  *
   6: *                    *
   7: *********************/
   8: 
   9: 
  10: #include "format.h" 
  11: #include "rdata_a.h" 
  12: 
  13: 
  14: using WWWI::IPDump;
  15: 
  16: 
  17: /*****************
  18: *                *
  19: *  METHOD CLONE  *
  20: *                *
  21: *****************/
  22: 
  23: 
  24: RDataPtr RDataA::Clone() const {
  25:   RDataA *rdpOut = new RDataA;
  26:   rdpOut->m_ip = m_ip; 
  27:   return (RDataPtr)rdpOut;
  28: }
  29: 
  30: 
  31: /*******************
  32: *                  *
  33: *  METHOD COMPARE  *
  34: *                  *
  35: *******************/
  36: 
  37: 
  38: bool RDataA::Compare(const RData &ci_rdr) const {
  39:   return (ci_rdr.As<RDataA>()->GetRDAddress()==m_ip);
  40: }
  41: 
  42:  
  43: /****************
  44: *               *
  45: *  METHOD DUMP  *
  46: *               *
  47: ****************/
  48: 
  49: 
  50: void RDataA::Dump(ostream &io_smr) const {
  51:   IPDump(io_smr,m_ip);
  52: }
  53: 
  54: 
  55: /************************
  56: *                       *
  57: *  METHOD GETRDADDRESS  *
  58: *                       *
  59: ************************/
  60: 
  61: 
  62: IPAddress RDataA::GetRDAddress() const { return m_ip; }
  63: 
  64: 
  65: /*******************
  66: *                  *
  67: *  METHOD ISMATCH  *
  68: *                  *
  69: *******************/
  70: 
  71: 
  72: bool RDataA::IsMatch(RRType i_ty, RRClass i_cl) {
  73:   if (i_cl!=CL_IN) return false;
  74:   if (i_ty==TY_A) return true;
  75:   return false;
  76: }           
  77: 
  78: 
  79: /*********************
  80: *                    *
  81: *  METHOD READRDATA  *
  82: *                    *
  83: *********************/
  84: 
  85: 
  86: void RDataA::ReadRData(BufferConstPtr ci_dpp) {
  87:   unsigned short us;
  88: 
  89:   ci_dpp->ReadNBO(us);
  90:   if (us!=sizeof(IPAddress)) 
  91:     throw BadParseEx(FOUT("length of A was not ",sizeof(IPAddress)));
  92:   ci_dpp->Read(m_ip);
  93: }
  94: 
  95: 
  96: /********************
  97: *                   *
  98: *  METHOD SETRDATA  *
  99: *                   *
 100: ********************/
 101: 
 102: 
 103: void RDataA::SetRData(const char *ci_strRData) {
 104:   m_ip = inet_addr(ci_strRData);
 105:   if (m_ip==(IPAddress)-1) 
 106:     throw BadParseEx(FOUT("RDataA::SetRData: not an IP address: ",ci_strRData));
 107: }
 108: 
 109: 
 110: /**********************
 111: *                     *
 112: *  METHOD WRITERDATA  *
 113: *                     *
 114: **********************/
 115: 
 116: 
 117: void RDataA::WriteRData(BufferPtr io_dpp) const {
 118:   unsigned short us;
 119: 
 120:   us = sizeof(IPAddress);
 121:   io_dpp->WriteNBO(us);
 122:   io_dpp->Write(m_ip);
 123: }
 124: 
 125: 
 126: /**********************
 127: *                     *
 128: *  RDATAA DESTRUCTOR  *
 129: *                     *
 130: **********************/
 131: 
 132: 
 133: RDataA::~RDataA() { m_ip = 0; }
 134: 
 135: 
 136: