dns/types.rl

71 lines
2.0 KiB
Ragel

%%{
machine z;
action rdata_a {
x := rr.(*RR_A)
x.Hdr = *hdr
x.A = net.ParseIP(tok.T[0])
}
action rdata_aaaa {
x := rr.(*RR_AAAA)
x.Hdr = *hdr
x.AAAA = net.ParseIP(tok.T[0])
}
action rdata_ns {
x := rr.(*RR_NS)
x.Hdr = *hdr
x.Ns = tok.T[0]
}
action rdata_cname {
x := rr.(*RR_CNAME)
x.Hdr = *hdr
x.Cname = tok.T[0]
}
action rdata_soa {
x := rr.(*RR_SOA)
x.Hdr = *hdr
x.Ns = tok.T[0]
x.Mbox = tok.T[1]
x.Serial = uint32(tok.N[0])
x.Refresh = uint32(tok.N[1])
x.Retry = uint32(tok.N[2])
x.Expire = uint32(tok.N[3])
x.Minttl = uint32(tok.N[4])
}
action rdata_mx {
x := rr.(*RR_MX)
x.Hdr = *hdr;
x.Pref = uint16(tok.N[0])
x.Mx = tok.T[0]
}
action rdata_ds {
x := rr.(*RR_DS)
x.Hdr = *hdr;
x.KeyTag = uint16(tok.N[0])
x.Algorithm = uint8(tok.N[1])
x.DigestType = uint8(tok.N[2])
x.Digest = tok.T[0]
}
action rdata_dnskey {
x := rr.(*RR_DNSKEY)
x.Hdr = *hdr;
x.Flags = uint16(tok.N[0])
x.Protocol = uint8(tok.N[1])
x.Algorithm = uint8(tok.N[2])
x.PublicKey = tok.T[0]
}
action rdata_rrsig {
x := rr.(*RR_RRSIG)
x.Hdr = *hdr;
x.TypeCovered = uint16(tok.N[0])
x.Algorithm = uint8(tok.N[1])
x.Labels = uint8(tok.N[2])
x.OrigTtl = uint32(tok.N[3])
x.Expiration = uint32(tok.N[4])
x.Inception = uint32(tok.N[5])
x.KeyTag = uint16(tok.N[6])
x.SignerName = tok.T[0]
x.Signature = tok.T[1]
}
}%%