Eyeball AnyFirewall Engine uses the
concept of channels to simplify application programming. Figure 8 shows
how the AFE fits in a typical VoIP application. Each channel
is accessed via a set of functions similar to the socket
API. Like sockets, each channel represents an endpoint for
sending and receiving data. However, channels hide the
underlying complexity required for the firewall traversal
process, such as the STUN, TURN, and ICE functionality. To
make adding the functionality of AFE to an existing
application easy, calls to the socket API are replaced with
similar AFE API calls. For example, to send and receive data
using AFE, an application calls the Send() or Recv() on a
channel, instead of using the send() and recv() functions of
the socket. Furthermore, AFE provides the Select() function
for channels, which models the behavior of the socket API
function, select().

Figure 8: Integration of the AnyFirewall Engine into a VoIP
application
Figure 9 shows the sequence of AFE API calls
that take place on the caller and callee user agents in
order to establish a call. Please note that, the sequence of
calls here is similar to the sequence of ICE methodology
steps in figure (3). Once a call is completed, the usual
Send(), Recv(), and Select() functions are used, as in
standard socket API.

Figure 9: SIP call setup using AFE API