/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "nsISupports.idl" #include "nsINetAddr.idl" native NetAddr(mozilla::net::NetAddr); [ptr] native NetAddrPtr(mozilla::net::NetAddr); /** * Filters are created and run on the parent, and filter all packets, both * ingoing and outgoing. The child must specify the name of a recognized filter * in order to create a socket. */ [uuid(afe2c40c-b9b9-4207-b898-e5cde18c6139)] interface nsISocketFilter : nsISupports { const long SF_INCOMING = 0; const long SF_OUTGOING = 1; bool filterPacket([const]in NetAddrPtr remote_addr, [const, array, size_is(len)]in uint8_t data, in unsigned long len, in long direction); }; /** * Factory of a specified filter. */ [uuid(81ee76c6-4753-4125-9c8c-290ed9ba62fb)] interface nsISocketFilterHandler : nsISupports { nsISocketFilter newFilter(); }; %{C++ /** * Filter handlers are registered with XPCOM under the following CONTRACTID prefix: */ #define NS_NETWORK_UDP_SOCKET_FILTER_HANDLER_PREFIX "@mozilla.org/network/udp-filter-handler;1?name=" #define NS_NETWORK_TCP_SOCKET_FILTER_HANDLER_PREFIX "@mozilla.org/network/tcp-filter-handler;1?name=" #define NS_NETWORK_SOCKET_FILTER_HANDLER_STUN_SUFFIX "stun" #define NS_STUN_UDP_SOCKET_FILTER_HANDLER_CONTRACTID NS_NETWORK_UDP_SOCKET_FILTER_HANDLER_PREFIX NS_NETWORK_SOCKET_FILTER_HANDLER_STUN_SUFFIX #define NS_STUN_TCP_SOCKET_FILTER_HANDLER_CONTRACTID NS_NETWORK_TCP_SOCKET_FILTER_HANDLER_PREFIX NS_NETWORK_SOCKET_FILTER_HANDLER_STUN_SUFFIX %}