/** * This module implements the Rtnetlink interface on top of `netlink`. * @module */ /// import { EventEmitter } from 'events'; import { MessageInfo, RawNetlinkSocketOptions } from '../raw'; import { NetlinkSocket, NetlinkSocketOptions, NetlinkSendOptions, RequestOptions } from '../netlink'; import { NetlinkMessage } from '../structs'; import { Message, MessageType, MulticastGroups } from './structs'; import * as rt from './structs'; import * as ifla from './ifla'; /** * rtnetlink families. Values up to 127 are reserved for real address * families, values above 128 may be used arbitrarily. */ export declare const RTNL_FAMILY_IPMR = 128; export declare const RTNL_FAMILY_IP6MR = 129; export declare const RTNL_FAMILY_MAX = 129; /** * For manipulation of filters in shared block, tcm_ifindex is set to * TCM_IFINDEX_MAGIC_BLOCK, and tcm_parent is aliased to tcm_block_index * which is the block index. */ export declare const TCM_IFINDEX_MAGIC_BLOCK = 4294967295; export interface RtNetlinkSocketOptions { } export interface RtNetlinkSendOptions extends NetlinkSendOptions { } interface EventMap { invalid(err: any, msg: NetlinkMessage[], rinfo: MessageInfo): void; message(msg: Message[], rinfo: MessageInfo): void; } /** * TODO * * This socket silently discards invalid messages (see `invalid` event). */ export declare class RtNetlinkSocket extends EventEmitter { emit(event: E, ...args: Parameters): boolean; on(event: E, listener: EventMap[E]): this; once(event: E, listener: EventMap[E]): this; off(event: E, listener: EventMap[E]): this; addListener(event: E, listener: EventMap[E]): this; removeListener(event: E, listener: EventMap[E]): this; readonly socket: NetlinkSocket; constructor(socket: NetlinkSocket, options?: RtNetlinkSocketOptions); private _receive; /** re-exposes `socket.addMembership()` with the specific type */ addMembership(group: MulticastGroups | keyof typeof MulticastGroups): void; /** re-exposes `socket.dropMembership()` with the specific type */ dropMembership(group: MulticastGroups | keyof typeof MulticastGroups): void; send(type: MessageType, data: Uint8Array | Uint8Array[], options?: RtNetlinkSendOptions & RequestOptions, callback?: (error?: Error) => any): number; request(type: MessageType, data: Uint8Array | Uint8Array[], options?: RtNetlinkSendOptions & RequestOptions): Promise; newTrafficAction(data: rt.TcAction, attrs?: {}, options?: RtNetlinkSendOptions & RequestOptions): Promise; delTrafficAction(data: rt.TcAction, attrs?: {}, options?: RtNetlinkSendOptions & RequestOptions): Promise; getTrafficAction(data: rt.TcAction, attrs?: {}, options?: RtNetlinkSendOptions & RequestOptions): Promise; getTrafficActions(data?: rt.TcAction, attrs?: {}, options?: RtNetlinkSendOptions & RequestOptions): Promise; newAddress(data: rt.Address, attrs?: rt.AddressAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; delAddress(data: rt.Address, attrs?: rt.AddressAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; getAddress(data: rt.Address, attrs?: rt.AddressAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; getAddresses(data?: rt.Address, attrs?: rt.AddressAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; newLink(data: rt.Link, attrs?: ifla.LinkAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; delLink(data: rt.Link, attrs?: ifla.LinkAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; getLink(data: rt.Link, attrs?: ifla.LinkAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; setLink(data: rt.Link, attrs?: ifla.LinkAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; getLinks(data?: rt.Link, attrs?: ifla.LinkAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; newNdUserOption(data: rt.NdUserOption, attrs?: rt.NdUserOptionAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; newNeighbor(data: rt.Neighbor, attrs?: rt.NeighborAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; delNeighbor(data: rt.Neighbor, attrs?: rt.NeighborAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; getNeighbor(data: rt.Neighbor, attrs?: rt.NeighborAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; getNeighbors(data?: rt.Neighbor, attrs?: rt.NeighborAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; newNeighborTable(data: rt.NeighborTable, attrs?: rt.NeighborTableAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; getNeighborTable(data: rt.NeighborTable, attrs?: rt.NeighborTableAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; setNeighborTable(data: rt.NeighborTable, attrs?: rt.NeighborTableAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; getNeighborTables(data?: rt.NeighborTable, attrs?: rt.NeighborTableAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; newPrefix(data: rt.Prefix, attrs?: rt.PrefixAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; newQdisc(data: rt.Tc, attrs?: rt.TcAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; delQdisc(data: rt.Tc, attrs?: rt.TcAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; getQdisc(data: rt.Tc, attrs?: rt.TcAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; getQdiscs(data?: rt.Tc, attrs?: rt.TcAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; newRoute(data: rt.Route, attrs?: rt.RouteAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; delRoute(data: rt.Route, attrs?: rt.RouteAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; getRoute(data: rt.Route, attrs?: rt.RouteAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; getRoutes(data?: rt.Route, attrs?: rt.RouteAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; newRule(data: rt.Rule, attrs?: rt.RuleAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; delRule(data: rt.Rule, attrs?: rt.RuleAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; getRule(data: rt.Rule, attrs?: rt.RuleAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; getRules(data?: rt.Rule, attrs?: rt.RuleAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; newNextHop(data: rt.NextHop, attrs?: rt.NextHopAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; delNextHop(data: rt.NextHop, attrs?: rt.NextHopAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; getNextHop(data: rt.NextHop, attrs?: rt.NextHopAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; getNextHops(data?: rt.NextHop, attrs?: rt.NextHopAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; newNextHopBucket(data: rt.NextHop, attrs?: rt.NextHopAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; delNextHopBucket(data: rt.NextHop, attrs?: rt.NextHopAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; getNextHopBucket(data: rt.NextHop, attrs?: rt.NextHopAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; getNextHopBuckets(data?: rt.NextHop, attrs?: rt.NextHopAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; newTrafficClass(data: rt.Tc, attrs?: rt.TcAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; delTrafficClass(data: rt.Tc, attrs?: rt.TcAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; getTrafficClass(data: rt.Tc, attrs?: rt.TcAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; getTrafficClasses(data?: rt.Tc, attrs?: rt.TcAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; newTrafficFilter(data: rt.Tc, attrs?: rt.TcAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; delTrafficFilter(data: rt.Tc, attrs?: rt.TcAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; getTrafficFilter(data: rt.Tc, attrs?: rt.TcAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; getTrafficFilters(data?: rt.Tc, attrs?: rt.TcAttrs, options?: RtNetlinkSendOptions & RequestOptions): Promise; } export declare function createRtNetlink(options?: RtNetlinkSocketOptions & NetlinkSocketOptions & RawNetlinkSocketOptions): RtNetlinkSocket; export {};