reSIProcate/rutil  9694
Classes | Public Member Functions | Private Attributes
resip::DnsNaptrRecord Class Reference

#include <DnsNaptrRecord.hxx>

Inheritance diagram for resip::DnsNaptrRecord:
Inheritance graph
[legend]
Collaboration diagram for resip::DnsNaptrRecord:
Collaboration graph
[legend]

List of all members.

Classes

class  NaptrException
class  RegExp

Public Member Functions

 DnsNaptrRecord ()
 DnsNaptrRecord (const RROverlay &)
 ~DnsNaptrRecord ()
int order () const
int & order ()
int preference () const
const Dataflags () const
const Dataservice () const
const RegExpregexp () const
const Datareplacement () const
const Dataname () const
bool isSameValue (const Data &value) const
EncodeStream & dump (EncodeStream &strm) const

Private Attributes

int mOrder
int mPreference
Data mFlags
Data mService
RegExp mRegexp
Data mReplacement
Data mName

Detailed Description

Definition at line 17 of file DnsNaptrRecord.hxx.


Constructor & Destructor Documentation

resip::DnsNaptrRecord::DnsNaptrRecord ( ) [inline]

Definition at line 64 of file DnsNaptrRecord.hxx.

: mOrder(-1), mPreference(-1) {}
DnsNaptrRecord::DnsNaptrRecord ( const RROverlay overlay)

Definition at line 97 of file DnsNaptrRecord.cxx.

References resip::RROverlay::data(), resip::RROverlay::dataLength(), InfoLog, mFlags, mName, mOrder, mPreference, mRegexp, mReplacement, mService, resip::RROverlay::msg(), resip::RROverlay::msgLength(), name(), resip::RROverlay::nameLength(), resip::DnsNaptrRecord::RegExp::regexp(), regexp(), resip::DnsNaptrRecord::RegExp::replacement(), and RRFIXEDSZ.

{
   char* name = 0;
   long len = 0;
   if (ARES_SUCCESS != ares_expand_name(overlay.data()-overlay.nameLength()-RRFIXEDSZ, overlay.msg(), overlay.msgLength(), &name, &len))
   {
      throw NaptrException("Failed parse of NAPTR record", __FILE__, __LINE__);
   }
   mName = name;
   free(name);

   mOrder = DNS__16BIT(overlay.data());
   mPreference = DNS__16BIT(overlay.data() + 2);
   const unsigned char* pPos = overlay.data() + 4;
   len = *pPos;

   if (pPos + len + 1 > overlay.data() + overlay.dataLength())
   {
      throw NaptrException("Failed parse of NAPTR record", __FILE__, __LINE__);
   }

   mFlags = Data(pPos + 1, len);
   pPos += len + 1;
   len = *pPos;

   if (pPos + len + 1 > overlay.data() + overlay.dataLength())
   {
      throw NaptrException("Failed parse of NAPTR record", __FILE__, __LINE__);
   }
   mService = Data(pPos + 1, len);
   pPos += len + 1;
   len = *pPos;

   if (pPos + len + 1 > overlay.data() + overlay.dataLength())
   {
      throw NaptrException("Failed parse of NAPTR record", __FILE__, __LINE__);
   }
   Data regexp(pPos + 1, len);
   pPos += len + 1;
   mRegexp = DnsNaptrRecord::RegExp(regexp);
   InfoLog (<< "regexp=" << mRegexp.regexp() << " rep=" << mRegexp.replacement());

   if (pPos[0] != 0)
   {
      if (ARES_SUCCESS != ares_expand_name(pPos, overlay.msg(), overlay.msgLength(), &name, &len))
      {
         throw NaptrException("Failed parse of NAPTR record", __FILE__, __LINE__);
      }
      mReplacement = name;
      free(name);
   }
}

Here is the call graph for this function:

resip::DnsNaptrRecord::~DnsNaptrRecord ( ) [inline]

Definition at line 66 of file DnsNaptrRecord.hxx.

{}

Member Function Documentation

EncodeStream & DnsNaptrRecord::dump ( EncodeStream &  strm) const [virtual]

Implements resip::DnsResourceRecord.

Definition at line 156 of file DnsNaptrRecord.cxx.

References mName, mOrder, and mPreference.

{
   strm << mName << " (NAPTR)--> o=" << mOrder << " p=" << mPreference;
   return strm;
}
const Data& resip::DnsNaptrRecord::flags ( ) const [inline]

Definition at line 72 of file DnsNaptrRecord.hxx.

References mFlags.

Referenced by resip::RRList::encodeRecordItem().

{ return mFlags; }
bool DnsNaptrRecord::isSameValue ( const Data value) const [virtual]

Implements resip::DnsResourceRecord.

Definition at line 150 of file DnsNaptrRecord.cxx.

References mReplacement.

{
   return mReplacement == value;
}
const Data& resip::DnsNaptrRecord::name ( ) const [inline, virtual]

Implements resip::DnsResourceRecord.

Definition at line 76 of file DnsNaptrRecord.hxx.

References mName.

Referenced by DnsNaptrRecord(), and resip::RRList::encodeRecordItem().

{ return mName; }
int resip::DnsNaptrRecord::order ( ) const [inline]

Definition at line 69 of file DnsNaptrRecord.hxx.

References mOrder.

Referenced by resip::RRList::encodeRecordItem(), and resip::RRVip::NaptrTransform::transform().

{ return mOrder; }
int& resip::DnsNaptrRecord::order ( ) [inline]

Definition at line 70 of file DnsNaptrRecord.hxx.

References mOrder.

{ return mOrder; }
int resip::DnsNaptrRecord::preference ( ) const [inline]

Definition at line 71 of file DnsNaptrRecord.hxx.

References mPreference.

Referenced by resip::RRList::encodeRecordItem().

{ return mPreference; }
const RegExp& resip::DnsNaptrRecord::regexp ( ) const [inline]

Definition at line 74 of file DnsNaptrRecord.hxx.

References mRegexp.

Referenced by DnsNaptrRecord(), and resip::RRList::encodeRecordItem().

{ return mRegexp; }
const Data& resip::DnsNaptrRecord::replacement ( ) const [inline]

Definition at line 75 of file DnsNaptrRecord.hxx.

References mReplacement.

Referenced by resip::RRList::encodeRecordItem().

{ return mReplacement; }
const Data& resip::DnsNaptrRecord::service ( ) const [inline]

Definition at line 73 of file DnsNaptrRecord.hxx.

References mService.

Referenced by resip::RRList::encodeRecordItem().

{ return mService; }

Member Data Documentation

Definition at line 83 of file DnsNaptrRecord.hxx.

Referenced by DnsNaptrRecord(), and flags().

Definition at line 87 of file DnsNaptrRecord.hxx.

Referenced by DnsNaptrRecord(), dump(), and name().

Definition at line 81 of file DnsNaptrRecord.hxx.

Referenced by DnsNaptrRecord(), dump(), and order().

Definition at line 82 of file DnsNaptrRecord.hxx.

Referenced by DnsNaptrRecord(), dump(), and preference().

Definition at line 84 of file DnsNaptrRecord.hxx.

Referenced by DnsNaptrRecord(), and service().


The documentation for this class was generated from the following files: