Neuron®
The Neuron® is the basis for the creation of open and secure federated networks for smart societies.
Loading...
Searching...
No Matches
ResourceRecord.cs
1using System.IO;
5
7{
11 [TypeName(TypeNameSerialization.LocalName)]
12 public abstract class ResourceRecord
13 {
14 private string name;
15 private TYPE type;
16 private CLASS _class;
17 private uint ttl;
18
23 {
24 this.name = string.Empty;
25 this.type = TYPE.A;
26 this._class = CLASS.IN;
27 this.ttl = 0;
28 }
29
37 public ResourceRecord(string Name, TYPE Type, CLASS Class, uint Ttl)
38 {
39 this.name = Name;
40 this.type = Type;
41 this._class = Class;
42 this.ttl = Ttl;
43 }
44
48 [DefaultValueStringEmpty]
49 public string Name
50 {
51 get => this.name;
52 set => this.name = value;
53 }
54
58 [DefaultValue(TYPE.A)]
59 public TYPE Type
60 {
61 get => this.type;
62 set => this.type = value;
63 }
64
68 [DefaultValue(CLASS.IN)]
69 public CLASS Class
70 {
71 get => this._class;
72 set => this._class = value;
73 }
74
78 [DefaultValue(0)]
79 public uint Ttl
80 {
81 get => this.ttl;
82 set => this.ttl = value;
83 }
84
90 internal static ResourceRecord Create(Stream Data)
91 {
92 string NAME = DnsClient.ReadName(Data);
93 TYPE TYPE = (TYPE)DnsClient.ReadUInt16(Data);
94 CLASS CLASS = (CLASS)DnsClient.ReadUInt16(Data);
95 uint TTL = DnsClient.ReadUInt32(Data);
96 ushort RDLENGTH = DnsClient.ReadUInt16(Data);
97 long EndPos = Data.Position + RDLENGTH;
98 ResourceRecord Response;
99
100 switch (TYPE)
101 {
102 case TYPE.A: Response = new A(NAME, TYPE, CLASS, TTL, Data); break;
103 case TYPE.NS: Response = new NS(NAME, TYPE, CLASS, TTL, Data); break;
104 case TYPE.MD: Response = new MD(NAME, TYPE, CLASS, TTL, Data); break;
105 case TYPE.MF: Response = new MF(NAME, TYPE, CLASS, TTL, Data); break;
106 case TYPE.CNAME: Response = new CNAME(NAME, TYPE, CLASS, TTL, Data); break;
107 case TYPE.SOA: Response = new SOA(NAME, TYPE, CLASS, TTL, Data); break;
108 case TYPE.MB: Response = new MB(NAME, TYPE, CLASS, TTL, Data); break;
109 case TYPE.MG: Response = new MG(NAME, TYPE, CLASS, TTL, Data); break;
110 case TYPE.MR: Response = new MR(NAME, TYPE, CLASS, TTL, Data); break;
111 case TYPE.NULL: Response = new NULL(NAME, TYPE, CLASS, TTL, Data, EndPos); break;
112 case TYPE.WKS: Response = new WKS(NAME, TYPE, CLASS, TTL, Data, EndPos); break;
113 case TYPE.PTR: Response = new PTR(NAME, TYPE, CLASS, TTL, Data); break;
114 case TYPE.HINFO: Response = new HINFO(NAME, TYPE, CLASS, TTL, Data); break;
115 case TYPE.MINFO: Response = new MINFO(NAME, TYPE, CLASS, TTL, Data); break;
116 case TYPE.MX: Response = new MX(NAME, TYPE, CLASS, TTL, Data); break;
117 case TYPE.TXT: Response = new TXT(NAME, TYPE, CLASS, TTL, Data, EndPos); break;
118 case TYPE.AAAA: Response = new AAAA(NAME, TYPE, CLASS, TTL, Data); break;
119 case TYPE.SRV: Response = new SRV(NAME, TYPE, CLASS, TTL, Data); break;
120
121 default:
122 Response = null; // Unrecognized Resource Record.
123 break;
124 }
125
126 Data.Position = EndPos;
127
128 return Response;
129 }
130
132 public override string ToString()
133 {
134 return this.name + "\t" + this.type.ToString() + "\t" + this._class.ToString() +
135 "\t" + this.ttl.ToString();
136 }
137
138 }
139}
Abstract base class for DNS clients.
Definition: DnsClient.cs:21
General information about a host.
Definition: HINFO.cs:14
Mailbox (Experimental)
Definition: MB.cs:12
Mail delivery (Obsolete)
Definition: MD.cs:13
Mail forwarding (Obsolete)
Definition: MF.cs:13
Mail group (Experimental)
Definition: MG.cs:12
Mail information about a host. (Experimental)
Definition: MINFO.cs:14
Mailbox Renaming (Experimental)
Definition: MR.cs:12
Abstract base class for a resource record.
ResourceRecord(string Name, TYPE Type, CLASS Class, uint Ttl)
Abstract base class for a resource record.
ResourceRecord()
Abstract base class for a resource record.
Start Of zone Authority
Definition: SOA.cs:14
Well Known Services, as defined in RFC 1010
Definition: WKS.cs:13
CLASS
TYPE fields are used in resource records.
Definition: CLASS.cs:11
TYPE
TYPE fields are used in resource records.
Definition: TYPE.cs:11
TypeNameSerialization
How the type name should be serialized.