NF_EventHandler

The client application must implement this interface and pass the object pointer to nf_init function. nfapi code calls the methods of NF_EventHandler from separate thread(s) to indicate the extension notifications. The interface is defined as an abstract class with pure virtual functions for C++. If the symbol _C_API is defined, the interface is a structure with function pointers.

C++ (_C_API is not defined)

class NF_EventHandler
{
public:
        virtual void threadStart() = 0;
        virtual void threadEnd() = 0;

        //
        // TCP events
        //
        virtual void tcpConnectRequest(ENDPOINT_ID id, PNF_TCP_CONN_INFO pConnInfo) = 0;
        virtual void tcpConnected(ENDPOINT_ID id, PNF_TCP_CONN_INFO pConnInfo) = 0;
        virtual void tcpClosed(ENDPOINT_ID id, PNF_TCP_CONN_INFO pConnInfo) = 0;
        virtual void tcpReceive(ENDPOINT_ID id, const char * buf, int len) = 0;
        virtual void tcpSend(ENDPOINT_ID id, const char * buf, int len) = 0;
        virtual void tcpCanReceive(ENDPOINT_ID id) = 0;
        virtual void tcpCanSend(ENDPOINT_ID id) = 0;

        //
        // UDP events
        //
        virtual void udpCreated(ENDPOINT_ID id, PNF_UDP_CONN_INFO pConnInfo) = 0;
        virtual void udpConnectRequest(ENDPOINT_ID id, PNF_UDP_CONN_REQUEST pConnReq) = 0;
        virtual void udpClosed(ENDPOINT_ID id, PNF_UDP_CONN_INFO pConnInfo) = 0;
        virtual void udpReceive(ENDPOINT_ID id, const unsigned char * remoteAddress, const char * buf, int len, PNF_UDP_OPTIONS options) = 0;
        virtual void udpSend(ENDPOINT_ID id, const unsigned char * remoteAddress, const char * buf, int len, PNF_UDP_OPTIONS options) = 0;
        virtual void udpCanReceive(ENDPOINT_ID id) = 0;
        virtual void udpCanSend(ENDPOINT_ID id) = 0;
};

C (_C_API is defined)

typedef struct _NF_EventHandler
{
        void (NFAPI_CC *threadStart)();
        void (NFAPI_CC *threadEnd)();

         //
         // TCP events
         //
         void (NFAPI_CC *tcpConnectRequest)(ENDPOINT_ID id, PNF_TCP_CONN_INFO pConnInfo);
         void (NFAPI_CC *tcpConnected)(ENDPOINT_ID id, PNF_TCP_CONN_INFO pConnInfo);
         void (NFAPI_CC *tcpClosed)(ENDPOINT_ID id, PNF_TCP_CONN_INFO pConnInfo);
         void (NFAPI_CC *tcpReceive)(ENDPOINT_ID id, const char * buf, int len);
         void (NFAPI_CC *tcpSend)(ENDPOINT_ID id, const char * buf, int len);
         void (NFAPI_CC *tcpCanReceive)(ENDPOINT_ID id);
         void (NFAPI_CC *tcpCanSend)(ENDPOINT_ID id);

         //
         // UDP events
         //
         void (NFAPI_CC *udpCreated)(ENDPOINT_ID id, PNF_UDP_CONN_INFO pConnInfo);
         void (NFAPI_CC *udpConnectRequest)(ENDPOINT_ID id, PNF_UDP_CONN_REQUEST pConnReq);
         void (NFAPI_CC *udpClosed)(ENDPOINT_ID id, PNF_UDP_CONN_INFO pConnInfo);
         void (NFAPI_CC *udpReceive)(ENDPOINT_ID id, const unsigned char * remoteAddress, const char * buf, int len, PNF_UDP_OPTIONS options);
         void (NFAPI_CC *udpSend)(ENDPOINT_ID id, const unsigned char * remoteAddress, const char * buf, int len, PNF_UDP_OPTIONS options);
         void (NFAPI_CC *udpCanReceive)(ENDPOINT_ID id);
         void (NFAPI_CC *udpCanSend)(ENDPOINT_ID id);
} NF_EventHandler, *PNF_EventHandler;
void threadStart()

Called immediately after starting the filtering thread. Use this event for thread-specific initialization, e.g. calling CoInitialize() etc.

void threadEnd()

Called before stopping the thread.

void tcpConnectRequest(ENDPOINT_ID id, PNF_TCP_CONN_INFO pConnInfo)
Parameters:
  • id – Connection identifier.

  • pConnInfo – Connection parameters, see NF_TCP_CONN_INFO.

Called before establishing an outgoing TCP connection, when NF_INDICATE_CONNECT_REQUESTS flag is enabled in an appropriate rule. It is possible to modify the fields filteringFlag and remoteAddress in pConnInfo structure. The changes are applied to the connection.

void tcpConnected(ENDPOINT_ID id, PNF_TCP_CONN_INFO pConnInfo)
Parameters:
  • id – Connection identifier.

  • pConnInfo – Connection parameters, see NF_TCP_CONN_INFO.

Called after establishing incoming or outgoing TCP connection.

void tcpClosed(ENDPOINT_ID id, PNF_TCP_CONN_INFO pConnInfo)
Parameters:
  • id – Connection identifier.

  • pConnInfo – Connection parameters, see NF_TCP_CONN_INFO.

Called after closing a TCP connection.

void tcpReceive(ENDPOINT_ID id, const char *buf, int len)
Parameters:
  • id – Connection identifier.

  • buf – Pointer to data buffer.

  • len – Buffer length

Indicates the buffer received from server.

void tcpSend(ENDPOINT_ID id, const char *buf, int len)
Parameters:
  • id – Connection identifier.

  • buf – Pointer to data buffer.

  • len – Buffer length

Indicates the buffer sent from a local socket.

void tcpCanReceive(ENDPOINT_ID id)
Parameters:

id – Connection identifier.

Notifies that the internal buffer for inbound packets is empty and it is possible to call nf_tcpPostReceive for pushing receives via specified connection.

void tcpCanSend(ENDPOINT_ID id)
Parameters:

id – Connection identifier.

Notifies that the internal buffer for outbound packets is empty and it is possible to call nf_tcpPostSend for pushing sends via specified connection.

void udpCreated(ENDPOINT_ID id, PNF_UDP_CONN_INFO pConnInfo)
Parameters:
  • id – Socket identifier.

  • pConnInfo – Socket parameters, see NF_UDP_CONN_INFO.

Called after creating UDP socket.

void udpConnectRequest(ENDPOINT_ID id, PNF_UDP_CONN_REQUEST pConnReq)

Not used.

void udpClosed(ENDPOINT_ID id, PNF_UDP_CONN_INFO pConnInfo)
Parameters:
  • id – Socket identifier.

  • pConnInfo – Socket parameters, see NF_UDP_CONN_INFO.

Called after closing a socket.

void udpReceive(ENDPOINT_ID id, const unsigned char *remoteAddress, const char *buf, int len, PNF_UDP_OPTIONS options)
Parameters:
  • id – Socket identifier.

  • remoteAddress – Source address.

  • buf – Pointer to data buffer.

  • len – Buffer length.

  • options – Pointer to NF_UDP_OPTIONS.

Indicates the buffer received from server.

void udpSend(ENDPOINT_ID id, const unsigned char *remoteAddress, const char *buf, int len, PNF_UDP_OPTIONS options)
Parameters:
  • id – Socket identifier.

  • remoteAddress – Source address.

  • buf – Pointer to data buffer.

  • len – Buffer length.

  • options – Pointer to NF_UDP_OPTIONS.

Indicates the buffer sent from a local socket.

void udpCanReceive(ENDPOINT_ID id)
Parameters:

id – Socket identifier.

Notifies that the internal buffer for inbound packets is empty, and it is possible to call nf_udpPostReceive for indicating receives via specified socket.

void udpCanSend(ENDPOINT_ID id)
Parameters:

id – Socket identifier.

Notifies that the internal buffer for outbound packets is empty, and it is possible to call nf_udpPostSend for indicating sends via specified socket.