The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Net::SAP - Session Announcement Protocol (rfc2974) packet parser

SYNOPSIS

  use Net::SAP;

  my $sap = Net::SAP->new();

  my $packet = $sap->receive();

  $sap->close();

DESCRIPTION

Net::SAP currently provides basic functionality for receiving and parsing SAP (RFC2974) multicast packets.

CONSTRUCTORS

$sap = Net::SAP->new()

The new() method is the constructor for the IO::Socket::Multicast class. When you create a Net::SAP object, it automatically joins the SAP multicast group, ready to start reading packets.

METHODS

$packet = $sap->receive()

This method blocks until a valid SAP packet has been received. The packet is parsed, decompressed and returned as a hashref:

 {
    'a' => 0,   # 0 is origin address is IPv4
                # 1 if the address IPv6
    'c' => 0,   # 1 if packet was compressed
    'e' => 0,   # 1 if packet was encrypted
    't' => 0,   # 0 if this is an advertizement
                # 1 for session deletion
    'v' => 1,   # SAP Packet format version number

    # Message ID Hash as 16bit hex number
    'msg_id_hash' => 0x1287,

    # Length of the authentication data
    'auth_len' => 0,    

    # The authentication data as binary
    'auth_data' => '',

    # IP the announcement originated from
    'origin_ip' => '152.78.104.83',     

    # MIME type of the payload
    'payload_type' => 'application/sdp',

    # The payload - usually an SDP file
    'payload' => '',

 };
$sap->close()

Leave the SAP multicast group and close the socket.

TODO

Add IPv6 support
Packet decryption and validation
Add support for creating and sending packets.
Add test script as part of build process
Return perl object (Net::SAP::Packet ?) instead of hash ?
Better documentation ?

SEE ALSO

perl(1), IO::Socket::Multicast(3)

AUTHOR

Nicholas Humfrey, njh@ecs.soton.ac.uk

COPYRIGHT AND LICENSE

Copyright (C) 2004 University of Southampton

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.005 or, at your option, any later version of Perl 5 you may have available.