本文整理汇总了Golang中github.com/abh/geodns/Godeps/_workspace/src/github.com/miekg/dns.RR_Header.Rrtype方法的典型用法代码示例。如果您正苦于以下问题:Golang RR_Header.Rrtype方法的具体用法?Golang RR_Header.Rrtype怎么用?Golang RR_Header.Rrtype使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/abh/geodns/Godeps/_workspace/src/github.com/miekg/dns.RR_Header
的用法示例。
在下文中一共展示了RR_Header.Rrtype方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: setupZoneData
func setupZoneData(data map[string]interface{}, Zone *Zone) {
recordTypes := map[string]uint16{
"a": dns.TypeA,
"aaaa": dns.TypeAAAA,
"alias": dns.TypeMF,
"cname": dns.TypeCNAME,
"mx": dns.TypeMX,
"ns": dns.TypeNS,
"txt": dns.TypeTXT,
"spf": dns.TypeSPF,
"srv": dns.TypeSRV,
}
for dk, dv_inter := range data {
dv := dv_inter.(map[string]interface{})
//log.Printf("K %s V %s TYPE-V %T\n", dk, dv, dv)
label := Zone.AddLabel(dk)
for rType, rdata := range dv {
switch rType {
case "max_hosts":
label.MaxHosts = valueToInt(rdata)
continue
case "ttl":
label.Ttl = valueToInt(rdata)
continue
}
dnsType, ok := recordTypes[rType]
if !ok {
log.Printf("Unsupported record type '%s'\n", rType)
continue
}
if rdata == nil {
//log.Printf("No %s records for label %s\n", rType, dk)
continue
}
//log.Printf("rdata %s TYPE-R %T\n", rdata, rdata)
records := make(map[string][]interface{})
switch rdata.(type) {
case map[string]interface{}:
// Handle NS map syntax, map[ns2.example.net:<nil> ns1.example.net:<nil>]
tmp := make([]interface{}, 0)
for rdataK, rdataV := range rdata.(map[string]interface{}) {
if rdataV == nil {
rdataV = ""
}
tmp = append(tmp, []string{rdataK, rdataV.(string)})
}
records[rType] = tmp
case string:
// CNAME and alias
tmp := make([]interface{}, 1)
tmp[0] = rdata.(string)
records[rType] = tmp
default:
records[rType] = rdata.([]interface{})
}
//log.Printf("RECORDS %s TYPE-REC %T\n", Records, Records)
label.Records[dnsType] = make(Records, len(records[rType]))
for i := 0; i < len(records[rType]); i++ {
//log.Printf("RT %T %#v\n", records[rType][i], records[rType][i])
record := new(Record)
var h dns.RR_Header
h.Class = dns.ClassINET
h.Rrtype = dnsType
// We add the TTL as a last pass because we might not have
// processed it yet when we process the record data.
switch len(label.Label) {
case 0:
h.Name = Zone.Origin + "."
default:
h.Name = label.Label + "." + Zone.Origin + "."
}
switch dnsType {
case dns.TypeA, dns.TypeAAAA:
str, weight := getStringWeight(records[rType][i].([]interface{}))
ip := str
record.Weight = weight
switch dnsType {
case dns.TypeA:
if x := net.ParseIP(ip); x != nil {
record.RR = &dns.A{Hdr: h, A: x}
break
//.........这里部分代码省略.........