@homebridge/ciao
Version:
ciao is a RFC 6763 compliant dns-sd library, advertising on multicast dns (RFC 6762) implemented in plain Typescript/JavaScript
137 lines • 4.41 kB
TypeScript
import { AddressInfo } from "net";
import { DNSLabelCoder } from "./DNSLabelCoder";
import { Question } from "./Question";
import "./records";
import { ResourceRecord } from "./ResourceRecord";
export declare const enum OpCode {
QUERY = 0
}
export declare const enum RCode {
NoError = 0
}
export declare const enum RType {
A = 1,
CNAME = 5,
PTR = 12,
TXT = 16,
AAAA = 28,// RFC 3596 2.1.
SRV = 33,// RFC 2782
OPT = 41,// RFC 6891
NSEC = 47
}
export declare const enum QType {
A = 1,
CNAME = 5,
PTR = 12,
TXT = 16,
AAAA = 28,// RFC 3596 2.1.
SRV = 33,// RFC 2782
NSEC = 47,// RFC 4034 4.
ANY = 255
}
export declare const enum RClass {
IN = 1
}
export declare const enum QClass {
IN = 1,// the internet
ANY = 255
}
export declare const enum PacketType {
QUERY = 0,
RESPONSE = 1
}
export interface DecodedData<T> {
data: T;
readBytes: number;
}
export interface OptionalDecodedData<T> {
data?: T;
readBytes: number;
}
export interface DNSQueryDefinition {
questions: Question[];
answers?: ResourceRecord[];
additionals?: ResourceRecord[];
}
export interface DNSProbeQueryDefinition {
questions: Question[];
authorities?: ResourceRecord[];
}
export interface DNSResponseDefinition {
id?: number;
questions?: Question[];
answers: ResourceRecord[];
additionals?: ResourceRecord[];
legacyUnicast?: boolean;
}
export interface PacketFlags {
authoritativeAnswer?: boolean;
truncation?: boolean;
recursionDesired?: boolean;
recursionAvailable?: boolean;
zero?: boolean;
authenticData?: boolean;
checkingDisabled?: boolean;
}
export interface PacketDefinition {
id?: number;
legacyUnicast?: boolean;
type: PacketType;
opcode?: OpCode;
flags?: PacketFlags;
rCode?: RCode;
questions?: Question[];
answers?: ResourceRecord[];
authorities?: ResourceRecord[];
additionals?: ResourceRecord[];
}
export interface DNSRecord {
getEncodingLength(coder: DNSLabelCoder): number;
encode(coder: DNSLabelCoder, buffer: Buffer, offset: number): number;
asString(): string;
}
export declare class DNSPacket {
static readonly UDP_PAYLOAD_SIZE_IPV4: number;
static readonly UDP_PAYLOAD_SIZE_IPV6: number;
private static readonly AUTHORITATIVE_ANSWER_MASK;
private static readonly TRUNCATION_MASK;
private static readonly RECURSION_DESIRED_MASK;
private static readonly RECURSION_AVAILABLE_MASK;
private static readonly ZERO_HEADER_MASK;
private static readonly AUTHENTIC_DATA_MASK;
private static readonly CHECKING_DISABLED_MASK;
private static readonly DNS_PACKET_HEADER_SIZE;
id: number;
private legacyUnicastEncoding;
readonly type: PacketType;
readonly opcode: OpCode;
readonly flags: PacketFlags;
readonly rcode: RCode;
readonly questions: Map<string, Question>;
readonly answers: Map<string, ResourceRecord>;
readonly authorities: Map<string, ResourceRecord>;
readonly additionals: Map<string, ResourceRecord>;
private estimatedEncodingLength;
private lastCalculatedLength;
private lengthDirty;
constructor(definition: PacketDefinition);
static createDNSQueryPacket(definition: DNSQueryDefinition | DNSProbeQueryDefinition, udpPayloadSize?: number): DNSPacket;
static createDNSQueryPackets(definition: DNSQueryDefinition | DNSProbeQueryDefinition, udpPayloadSize?: number): DNSPacket[];
static createDNSResponsePacketsFromRRSet(definition: DNSResponseDefinition, udpPayloadSize?: number): DNSPacket;
canBeCombinedWith(packet: DNSPacket, udpPayloadSize?: number): boolean;
combineWith(packet: DNSPacket): void;
addQuestions(...questions: Question[]): boolean;
addAnswers(...answers: ResourceRecord[]): boolean;
addAuthorities(...authorities: ResourceRecord[]): boolean;
addAdditionals(...additionals: ResourceRecord[]): boolean;
private addRecords;
setLegacyUnicastEncoding(legacyUnicastEncoding: boolean): void;
legacyUnicastEncodingEnabled(): boolean;
private getEstimatedEncodingLength;
private getEncodingLength;
encode(): Buffer;
static decode(context: AddressInfo, buffer: Buffer, offset?: number): DNSPacket;
private static decodeList;
asLoggingString(udpPayloadSize?: number): string;
}
//# sourceMappingURL=DNSPacket.d.ts.map