|
|
| |
Net::SIP::Leg(3) |
User Contributed Perl Documentation |
Net::SIP::Leg(3) |
Net::SIP::Leg - Wrapper around Socket for sending and receiving SIP packets
my $leg = Net::SIP::Leg->new( addr => '192.168.0.2' );
$leg->deliver( $packet, '192.168.0.5:5060' );
A Leg wraps the socket which is used to send and receive packets. It
provides ways to strip Via header from incoming packets, to add
Via header to outgoing packets and to add Record-Route header
while forwarding.
It's usually not used directly, but from Net::SIP::Dispatcher.
- new ( %ARGS )
- The constructor creates a new object based on the hash
%ARGS. The following keys are used from
%ARGS:
- sock
- The socket as IO::Socket object. "addr",
"port",
"family" and
"proto" will be determined from this
object and not from %ARGS. This will be used to
create the SocketPool object.
- socketpool
- The socketpool as Net::SIP::SocketPool compatible object. This argument
can not be used together with "sock". It
will instead determine the master socket by calling master on the
given SocketPool object.
- addr
- The local IP address of the socket. If this is given but no port it will
extract port from addr, if it's in the format
"host:port".
- host
- The hostname matching "addr". This is
used to create default contact information and the Via header. If not
given defaults to the IP address. Use of hostname instead of IP address is
relevant for TLS where the name is needed in validation of the peers
certificate.
- port
- The port of the socket. Defaults to 5060.
- family
- The family of the socket. Will be determined from
"addr" if omitted.
- proto
- The connection protocol, e.g. 'udp', 'tcp' or 'tls'. Defaults to
'udp'.
- dst
- The optional fixed target of the leg as hash with keys
"host",
"addr",
"port" and
"family".
- contact
- Optional contact information which will be added as Record-route
header to outgoing requests and used within Contact header for 200
Responses to INVITE. If not given it will be created based on
"addr",
"port" and
"proto".
- tls
- Optional arguments to be used in creating a TLS connection, as expected by
IO::Socket::SSL. These are used for both incoming and outgoing TLS
connection. Typically this involves
"SSL_cert_file",
"SSL_key_file" and
"SSL_ca_file" or similar.
If no socket is given with
"sock" it will be created based on
"addr",
"port" and
"proto". If this fails the constructur
will "die()".
The constructor will create a uniq branch tag for this leg.
- forward_incoming ( PACKET )
- Modifies the Net::SIP::Packet PACKET in-place for forwarding, e.g strips
top Via header in responses, adds received parameter to top
Via header in requests, handles the difference between forwarding
of requests to strict or loose routes and inserts Record-Route
header in requests.
- forward_outgoing ( PACKET, LEG_IN )
- Similar to forward_incoming, but will be called on the outgoing
leg. LEG_IN is the Net::SIP::Leg, where the packet came in (and where
forward_incoming was called). Will add Record-Route header
and remove itself from Route.
- deliver ( PACKET, ADDR, [ CALLBACK ] )
- Delivers Net::SIP::Packet PACKET through the leg
$self to ADDR. ADDR is a hash with the keys
"host",
"addr",
"port" and
"family". Usually this method will be
call from within Net::SIP::Dispatcher.
If the packet was received by the other end (which is only
possible to say if a reliable protocol, e.g. 'tcp' was used) it will
call CALLBACK if provided. See invoke_callback in Net::SIP::Util
for the format of callbacks. If the packet could not be delivered
CALLBACK will be invoked with the appropriate errno
($!).
While delivering requests it adds a Via header.
- receive(PACKET, FROM)
- This is called from the dispatcher if the the Net::SIP::Packet
PACKET was received from FROM. FROM is given as hash with
keys "addr",
"port",
"family" and
"proto". This function might process the
packet further or block it.
It will return "(PACKET,
FROM)" in the normal case or
"()" if blocked.
- check_via ( PACKET )
- Returns TRUE if the top Via header in the Net::SIP::Packet PACKET
contains the branch-tag from $self,
otherwise FALSE. Used to check if the response came in through the same
leg the response was send.
- add_via ( PACKET )
- Adds itself to PACKET as Via header.
- can_deliver_to ( ADDR|%SPEC )
- Returns TRUE if the leg can deliver address specified by ADDR or
%SPEC. ADDR is a full or partial SIP URI.
If the caller has 'proto','addr','port' and 'family' already
as separate items it can call the method with
%SPEC instead.
Right now it has now way to check if the leg can deliver to a
specific host because it has no access to the routing information of the
underlying OS, so that only proto will be checked.
- match(%SPEC)
- This checks if the given SPEC matches the leg. This is used from
inside the get_legs in Net::SIP::Dispatcher to get all legs
matching specific criteria. The SPEC can contain the keys
"addr",
"port" and
"proto" which match the arguments given
during construction of the leg or are obtained from the legs socket.
Additionally "sub" can be used to
specify a function which gets called with the leg object and must return
true on match only.
The method returns true if there was a full match and false
otherwise.
- socketpool
- This returns the Net::SIP::SocketPool object associated with the leg.
- laddr(LEVEL)
- This will return the local address of the socket, either as address only
(LEVEL is 0) or as "ip:port"
(higher levels).
- dump
- Returns string containing information about the leg. Used for
debugging.
Visit the GSP FreeBSD Man Page Interface. Output converted with ManDoc. |