Add tests for EUIxx
This commit is contained in:
parent
740ad9674c
commit
f43b7368bd
2
msg.go
2
msg.go
|
@ -129,6 +129,8 @@ var TypeToString = map[uint16]string{
|
|||
TypeL32: "L32",
|
||||
TypeL64: "L64",
|
||||
TypeLP: "LP",
|
||||
TypeEUI48: "EUI48",
|
||||
TypeEUI64: "EUI64",
|
||||
TypeTKEY: "TKEY", // Meta RR
|
||||
TypeTSIG: "TSIG", // Meta RR
|
||||
TypeAXFR: "AXFR", // Meta RR
|
||||
|
|
|
@ -738,3 +738,21 @@ foo. IN TXT "THIS IS TEXT MAN"; this is comment 8
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestEUIxx(t *testing.T) {
|
||||
tests := map[string]string{
|
||||
"host.example. IN EUI48 00-00-5e-90-01-2a": "host.example.\t3600\tIN\tEUI48\t00-00-5e-90-01-2a",
|
||||
"host.example. IN EUI64 00-00-5e-ef-00-00-00-2a": "host.example.\t3600\tIN\tEUI64\t00-00-5e-ef-00-00-00-2a",
|
||||
}
|
||||
for i, o := range tests {
|
||||
r, e := NewRR(i)
|
||||
if e != nil {
|
||||
t.Logf("Failed to parse %s: %s\n", i, e.Error())
|
||||
t.Fail()
|
||||
}
|
||||
if r.String() != o {
|
||||
t.Logf("Want %s, got %s\n", o, r.String())
|
||||
t.Fail()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
18
types.go
18
types.go
|
@ -1384,8 +1384,7 @@ func (rr *EUI48) Header() *RR_Header { return &rr.Hdr }
|
|||
func (rr *EUI48) copy() RR { return &EUI48{*rr.Hdr.copyHeader(), rr.Address} }
|
||||
|
||||
func (rr *EUI48) String() string {
|
||||
s := rr.Hdr.String() + euiToString(rr.Address, 48)
|
||||
return s
|
||||
return rr.Hdr.String() + euiToString(rr.Address, 48)
|
||||
}
|
||||
|
||||
func (rr *EUI48) len() int {
|
||||
|
@ -1401,8 +1400,7 @@ func (rr *EUI64) Header() *RR_Header { return &rr.Hdr }
|
|||
func (rr *EUI64) copy() RR { return &EUI64{*rr.Hdr.copyHeader(), rr.Address} }
|
||||
|
||||
func (rr *EUI64) String() string {
|
||||
s := rr.Hdr.String() + euiToString(rr.Address, 64)
|
||||
return s
|
||||
return rr.Hdr.String() + euiToString(rr.Address, 64)
|
||||
}
|
||||
|
||||
func (rr *EUI64) len() int {
|
||||
|
@ -1465,13 +1463,13 @@ func cmToString(mantissa, exponent uint8) string {
|
|||
func euiToString(eui uint64, bits int) (hex string) {
|
||||
switch bits {
|
||||
case 64:
|
||||
hex = strconv.FormatUint(eui, 16)
|
||||
hex = hex[0:1] + "-" + hex[2:3] + "-" + hex[4:5] + "-" + hex[6:7] +
|
||||
"-" + hex[8:9] + "-" + hex[10:11] + "-" + hex[12:13] + "-" + hex[14:15]
|
||||
hex = fmt.Sprintf("%16.16x", eui)
|
||||
hex = hex[0:2] + "-" + hex[2:4] + "-" + hex[4:6] + "-" + hex[6:8] +
|
||||
"-" + hex[8:10] + "-" + hex[10:12] + "-" + hex[12:14] + "-" + hex[14:16]
|
||||
case 48:
|
||||
hex = strconv.FormatUint(eui, 16) // shift here?
|
||||
hex = hex[0:1] + "-" + hex[2:3] + "-" + hex[4:5] + "-" + hex[6:7] +
|
||||
"-" + hex[8:9] + "-" + hex[10:11]
|
||||
hex = fmt.Sprintf("%12.12x", eui)
|
||||
hex = hex[0:2] + "-" + hex[2:4] + "-" + hex[4:6] + "-" + hex[6:8] +
|
||||
"-" + hex[8:10] + "-" + hex[10:12]
|
||||
}
|
||||
return
|
||||
}
|
||||
|
|
|
@ -1287,7 +1287,7 @@ func setEUI48(h RR_Header, c chan lex, f string) (RR, *ParseError) {
|
|||
}
|
||||
addr := make([]byte, 12)
|
||||
dash := 0
|
||||
for i := 0; i < 12; i += 2 {
|
||||
for i := 0; i < 10; i += 2 {
|
||||
addr[i] = l.token[i+dash]
|
||||
addr[i+1] = l.token[i+1+dash]
|
||||
dash++
|
||||
|
@ -1295,6 +1295,8 @@ func setEUI48(h RR_Header, c chan lex, f string) (RR, *ParseError) {
|
|||
return nil, &ParseError{f, "bad EUI48 Address", l}
|
||||
}
|
||||
}
|
||||
addr[10] = l.token[15]
|
||||
addr[11] = l.token[16]
|
||||
|
||||
if i, e := strconv.ParseUint(string(addr), 16, 48); e != nil {
|
||||
return nil, &ParseError{f, "bad EUI48 Address", l}
|
||||
|
@ -1314,7 +1316,7 @@ func setEUI64(h RR_Header, c chan lex, f string) (RR, *ParseError) {
|
|||
}
|
||||
addr := make([]byte, 16)
|
||||
dash := 0
|
||||
for i := 0; i < 16; i += 2 {
|
||||
for i := 0; i < 14; i += 2 {
|
||||
addr[i] = l.token[i+dash]
|
||||
addr[i+1] = l.token[i+1+dash]
|
||||
dash++
|
||||
|
@ -1322,6 +1324,8 @@ func setEUI64(h RR_Header, c chan lex, f string) (RR, *ParseError) {
|
|||
return nil, &ParseError{f, "bad EUI64 Address", l}
|
||||
}
|
||||
}
|
||||
addr[14] = l.token[21]
|
||||
addr[15] = l.token[22]
|
||||
|
||||
if i, e := strconv.ParseUint(string(addr), 16, 64); e != nil {
|
||||
return nil, &ParseError{f, "bad EUI68 Address", l}
|
||||
|
|
Loading…
Reference in New Issue