コード例 #1
0
ファイル: dns.go プロジェクト: guilhem/netcore
func answerMX(q *dns.Question, v *DNSValue) dns.RR {
	answer := new(dns.MX)
	answer.Header().Name = q.Name
	answer.Header().Rrtype = dns.TypeMX
	answer.Header().Class = dns.ClassINET
	answer.Preference = 50 // default if not defined
	priority, err := strconv.Atoi(v.Attr["priority"])
	if err == nil {
		answer.Preference = uint16(priority)
	}
	if target, ok := v.Attr["target"]; ok {
		answer.Mx = strings.TrimSuffix(target, ".") + "."
	} else if v.Value != "" { // allows for simplified setting
		answer.Mx = strings.TrimSuffix(v.Value, ".") + "."
	}
	return answer
}
コード例 #2
0
ファイル: dns.go プロジェクト: dullgiulio/kuradns
// handleDnsMX writes a MX record pointing to s.host into m for host name.
func (s *server) handleDnsMX(name host, m *dns.Msg) {
	r := new(dns.MX)
	r.Hdr = dns.RR_Header{
		Name:   name.dns(),
		Rrtype: dns.TypeMX,
		Class:  dns.ClassINET,
		Ttl:    3600,
	}
	r.Preference = 10
	r.Mx = s.self.dns()
	m.Answer = make([]dns.RR, 1)
	m.Answer[0] = r
}
コード例 #3
0
ファイル: dns_test.go プロジェクト: ruflin/beats
func TestRRsToMapStrsWithOPTRecord(t *testing.T) {
	o := new(mkdns.OPT)
	o.Hdr.Name = "." // MUST be the root zone, per definition.
	o.Hdr.Rrtype = mkdns.TypeOPT

	r := new(mkdns.MX)
	r.Hdr = mkdns.RR_Header{Name: "miek.nl.", Rrtype: mkdns.TypeMX,
		Class: mkdns.ClassINET, Ttl: 3600}
	r.Preference = 10
	r.Mx = "mx.miek.nl."

	// The OPT record is a psuedo-record so it doesn't become a real record
	// in our conversion, and there will be 1 entry instead of 2.
	mapStrs := rrsToMapStrs([]mkdns.RR{o, r})
	assert.Len(t, mapStrs, 1)

	mapStr := mapStrs[0]
	assert.Equal(t, "IN", mapStr["class"])
	assert.Equal(t, "MX", mapStr["type"])
	assert.Equal(t, "mx.miek.nl.", mapStr["data"])
	assert.Equal(t, "miek.nl.", mapStr["name"])
	assert.EqualValues(t, 10, mapStr["preference"])
}