1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
/*
* Dibbler - a portable DHCPv6
*
* authors: Tomasz Mrugalski <thomson@klub.com.pl>
* Marek Senderski <msend@o2.pl>
*
* released under GNU GPL v2 only licence
*/
#ifndef ADDRADDR_H
#define ADDRADDR_H
#include <list>
#include <iostream>
#include "IPv6Addr.h"
#include "SmartPtr.h"
#include "DHCPConst.h"
class TAddrAddr
{
friend std::ostream & operator<<(std::ostream & strum, TAddrAddr &x);
public:
TAddrAddr(SPtr<TIPv6Addr> addr, long pref, long valid);
TAddrAddr(SPtr<TIPv6Addr> addr, long pref, long valid, int prefix);
// return address in packed format (char[16])
SPtr<TIPv6Addr> get();
// lifetime related
unsigned long getPref();
unsigned long getValid();
unsigned long getPrefTimeout();
void setPref(unsigned long pref);
void setValid(unsigned long valid);
unsigned long getValidTimeout();
int getPrefix();
// timestamp
long getTimestamp();
void setTimestamp(long ts);
void setTimestamp();
// tentative
enum EAddrStatus getTentative();
void setTentative(enum EAddrStatus state);
protected:
enum EAddrStatus Tentative;
unsigned long Prefered;
unsigned long Valid;
SPtr<TIPv6Addr> Addr;
unsigned long Timestamp;
int Prefix;
};
typedef std::list< SPtr<TIPv6Addr> > TAddrList;
#endif
|