Contents

    1  Introduction
        1.1  What is IPAF?
        1.2  Why IPAF, and not libpcap, libdnet, etc?

    2  Overview
        2.1  Transmitting UDP Packets
        2.2  Packet Type Monitor
        2.3  Transmitting UDP Packets Revisited in Python
        2.4  Packet Type Monitor Revisited in Python

    3  Memory Management in IPAF
        3.1  Cells, References, and Segment Pointers
        3.2  Maintaining Reference Counts
        3.3  Defining New Cell Types

    4  Messages, Queues and Readers in IPAF
        4.1  Why Does IPAF Use Messages and Queues?
        4.2  Working With Simple Queues
        4.3  Queue Readers
        4.4  Implementing Specialized Queues

    5  Collecting Packets
        5.1  Creating a Collector
        5.2  Locating Packet Segments
        5.3  Retrieving Segment Fields

    6  Generating Packets
        6.1  Creating a Generator
        6.2  Creating a Packet
        6.3  Setting Packet Fields
        6.4  Transmitting the Packet