/**
* 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 {};