<?xml version="1.0"?>
<!-- This file was automatically generated from C sources - DO NOT EDIT!
To affect the contents of this file, edit the original C definitions,
and/or use gtk-doc annotations.  -->
<repository version="1.2"
            xmlns="http://www.gtk.org/introspection/core/1.0"
            xmlns:c="http://www.gtk.org/introspection/c/1.0"
            xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  <include name="GObject" version="2.0"/>
  <package name="gupnp-1.0"/>
  <namespace name="GUPnPIgd"
             version="1.0"
             shared-library="libgupnp-igd-1.0.so.4"
             c:identifier-prefixes="GUPnP"
             c:symbol-prefixes="gupnp">
    <function-macro name="IS_SIMPLE_IGD"
                    c:identifier="GUPNP_IS_SIMPLE_IGD"
                    introspectable="0">
      <source-position filename="libgupnp-igd/gupnp-simple-igd.h" line="39"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SIMPLE_IGD_CLASS"
                    c:identifier="GUPNP_IS_SIMPLE_IGD_CLASS"
                    introspectable="0">
      <source-position filename="libgupnp-igd/gupnp-simple-igd.h" line="41"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SIMPLE_IGD_THREAD"
                    c:identifier="GUPNP_IS_SIMPLE_IGD_THREAD"
                    introspectable="0">
      <source-position filename="libgupnp-igd/gupnp-simple-igd-thread.h"
                       line="38"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="IS_SIMPLE_IGD_THREAD_CLASS"
                    c:identifier="GUPNP_IS_SIMPLE_IGD_THREAD_CLASS"
                    introspectable="0">
      <source-position filename="libgupnp-igd/gupnp-simple-igd-thread.h"
                       line="40"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SIMPLE_IGD"
                    c:identifier="GUPNP_SIMPLE_IGD"
                    introspectable="0">
      <source-position filename="libgupnp-igd/gupnp-simple-igd.h" line="33"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SIMPLE_IGD_CAST"
                    c:identifier="GUPNP_SIMPLE_IGD_CAST"
                    introspectable="0">
      <source-position filename="libgupnp-igd/gupnp-simple-igd.h" line="46"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SIMPLE_IGD_CLASS"
                    c:identifier="GUPNP_SIMPLE_IGD_CLASS"
                    introspectable="0">
      <source-position filename="libgupnp-igd/gupnp-simple-igd.h" line="36"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SIMPLE_IGD_GET_CLASS"
                    c:identifier="GUPNP_SIMPLE_IGD_GET_CLASS"
                    introspectable="0">
      <source-position filename="libgupnp-igd/gupnp-simple-igd.h" line="43"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SIMPLE_IGD_THREAD"
                    c:identifier="GUPNP_SIMPLE_IGD_THREAD"
                    introspectable="0">
      <source-position filename="libgupnp-igd/gupnp-simple-igd-thread.h"
                       line="32"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SIMPLE_IGD_THREAD_CAST"
                    c:identifier="GUPNP_SIMPLE_IGD_THREAD_CAST"
                    introspectable="0">
      <source-position filename="libgupnp-igd/gupnp-simple-igd-thread.h"
                       line="45"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SIMPLE_IGD_THREAD_CLASS"
                    c:identifier="GUPNP_SIMPLE_IGD_THREAD_CLASS"
                    introspectable="0">
      <source-position filename="libgupnp-igd/gupnp-simple-igd-thread.h"
                       line="35"/>
      <parameters>
        <parameter name="klass">
        </parameter>
      </parameters>
    </function-macro>
    <function-macro name="SIMPLE_IGD_THREAD_GET_CLASS"
                    c:identifier="GUPNP_SIMPLE_IGD_THREAD_GET_CLASS"
                    introspectable="0">
      <source-position filename="libgupnp-igd/gupnp-simple-igd-thread.h"
                       line="42"/>
      <parameters>
        <parameter name="obj">
        </parameter>
      </parameters>
    </function-macro>
    <class name="SimpleIgd"
           c:symbol-prefix="simple_igd"
           c:type="GUPnPSimpleIgd"
           parent="GObject.Object"
           glib:type-name="GUPnPSimpleIgd"
           glib:get-type="gupnp_simple_igd_get_type"
           glib:type-struct="SimpleIgdClass">
      <doc xml:space="preserve"
           filename="libgupnp-igd/gupnp-simple-igd.h"
           line="55">All members are private, access them using methods and properties</doc>
      <source-position filename="libgupnp-igd/gupnp-simple-igd.h" line="51"/>
      <constructor name="new" c:identifier="gupnp_simple_igd_new">
        <doc xml:space="preserve"
             filename="libgupnp-igd/gupnp-simple-igd.c"
             line="604">main context)
This creates a new #GUPnpSimpleIgd object using the special GMainContext</doc>
        <source-position filename="libgupnp-igd/gupnp-simple-igd.h" line="93"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libgupnp-igd/gupnp-simple-igd.c"
               line="610">a new #GUPnPSimpleIgd</doc>
          <type name="SimpleIgd" c:type="GUPnPSimpleIgd*"/>
        </return-value>
      </constructor>
      <function name="error_quark" c:identifier="gupnp_simple_igd_error_quark">
        <return-value transfer-ownership="none">
          <type name="GLib.Quark" c:type="GQuark"/>
        </return-value>
      </function>
      <method name="add_port" c:identifier="gupnp_simple_igd_add_port">
        <doc xml:space="preserve"
             filename="libgupnp-igd/gupnp-simple-igd.c"
             line="951">This adds a port to the router's forwarding table. The mapping will
be automatically refreshed by this object until it is either
removed with gupnp_simple_igd_remove_port(),
gupnp_simple_igd_remove_port_local() or the object disapears.

If there is a problem, the #GUPnPSimpleIgd::error-mapping-port signal will
be emitted. If a router is found and a port is mapped correctly,
#GUPnPSimpleIgd::mapped-external-port will be emitted. These signals may
be emitted multiple times if there are multiple routers present.</doc>
        <source-position filename="libgupnp-igd/gupnp-simple-igd.h" line="96"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="953">The #GUPnPSimpleIgd object</doc>
            <type name="SimpleIgd" c:type="GUPnPSimpleIgd*"/>
          </instance-parameter>
          <parameter name="protocol" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="954">the protocol "UDP" or "TCP"</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="external_port" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="955">The port to try to open on the external device,
  0 means to try a random port if the same port as the local port is already
  taken</doc>
            <type name="guint16" c:type="guint16"/>
          </parameter>
          <parameter name="local_ip" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="958">The IP address to forward packets to (most likely the local ip address)</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="local_port" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="959">The local port to forward packets to</doc>
            <type name="guint16" c:type="guint16"/>
          </parameter>
          <parameter name="lease_duration" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="960">The duration of the lease (it will be auto-renewed before it expires). This is in seconds.</doc>
            <type name="guint32" c:type="guint32"/>
          </parameter>
          <parameter name="description" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="961">The description that will appear in the router's table</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
        </parameters>
      </method>
      <method name="delete_all_mappings"
              c:identifier="gupnp_simple_igd_delete_all_mappings">
        <doc xml:space="preserve"
             filename="libgupnp-igd/gupnp-simple-igd.c"
             line="272">Removes all mappings and prevents other from being formed
Should only be called by the dispose function of subclasses</doc>
        <source-position filename="libgupnp-igd/gupnp-simple-igd.h"
                         line="117"/>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp-igd/gupnp-simple-igd.c"
               line="279">%TRUE if the object can be disposed, %FALSE otherwise</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="274">a #GUPnPSimpleIgd</doc>
            <type name="SimpleIgd" c:type="GUPnPSimpleIgd*"/>
          </instance-parameter>
        </parameters>
      </method>
      <method name="remove_port" c:identifier="gupnp_simple_igd_remove_port">
        <doc xml:space="preserve"
             filename="libgupnp-igd/gupnp-simple-igd.c"
             line="1020">This tries to remove a port entry from the routers that was previously added
with gupnp_simple_igd_add_port(). There is no indicated of success or failure
it is a best effort mechanism. If it fails, the bindings will disapears after
the lease duration set when the port where added.</doc>
        <source-position filename="libgupnp-igd/gupnp-simple-igd.h"
                         line="105"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="1022">The #GUPnPSimpleIgd object</doc>
            <type name="SimpleIgd" c:type="GUPnPSimpleIgd*"/>
          </instance-parameter>
          <parameter name="protocol" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="1023">the protocol "UDP" or "TCP" as given to
 gupnp_simple_igd_add_port()</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="external_port" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="1025">The port to try to open on the external device as given to
 gupnp_simple_igd_add_port()</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
        </parameters>
      </method>
      <method name="remove_port_local"
              c:identifier="gupnp_simple_igd_remove_port_local">
        <doc xml:space="preserve"
             filename="libgupnp-igd/gupnp-simple-igd.c"
             line="1077">This tries to remove a port entry from the routers that was previously added
with gupnp_simple_igd_add_port(). There is no indicated of success or failure
it is a best effort mechanism. If it fails, the bindings will disapears after
the lease duration set when the port where added.</doc>
        <source-position filename="libgupnp-igd/gupnp-simple-igd.h"
                         line="110"/>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <instance-parameter name="self" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="1079">The #GUPnPSimpleIgd object</doc>
            <type name="SimpleIgd" c:type="GUPnPSimpleIgd*"/>
          </instance-parameter>
          <parameter name="protocol" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="1080">the protocol "UDP" or "TCP" as given to
 gupnp_simple_igd_add_port()</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="local_ip" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="1082">The local ip on the internal device as was to
 gupnp_simple_igd_add_port()</doc>
            <type name="utf8" c:type="const gchar*"/>
          </parameter>
          <parameter name="local_port" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="1084">The port to try to open on the internal device as given to
 gupnp_simple_igd_add_port()</doc>
            <type name="guint16" c:type="guint16"/>
          </parameter>
        </parameters>
      </method>
      <property name="main-context" transfer-ownership="none">
        <type name="gpointer" c:type="gpointer"/>
      </property>
      <field name="parent">
        <type name="GObject.Object" c:type="GObject"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="SimpleIgdPrivate" c:type="GUPnPSimpleIgdPrivate*"/>
      </field>
      <glib:signal name="context-available" when="last">
        <doc xml:space="preserve"
             filename="libgupnp-igd/gupnp-simple-igd.c"
             line="240">This is to allow the application to control which #GUPnPContext this
client should use. If the application connects to this signal, it controls
if a context will be used by changing the return value of the signal
handler.</doc>
        <return-value transfer-ownership="none">
          <doc xml:space="preserve"
               filename="libgupnp-igd/gupnp-simple-igd.c"
               line="250">FALSE if the context should be used or TRUE if it should
be ignored</doc>
          <type name="gboolean" c:type="gboolean"/>
        </return-value>
        <parameters>
          <parameter name="context" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="243">a #GUPnPContext</doc>
            <type name="GObject.Object"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="error-mapping-port" when="last" detailed="1">
        <doc xml:space="preserve"
             filename="libgupnp-igd/gupnp-simple-igd.c"
             line="217">This means that mapping a port on a specific IGD has failed (it may still
succeed on other IGDs on the network).</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="error" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="220">a #GError</doc>
            <type name="GLib.Error"/>
          </parameter>
          <parameter name="proto" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="221">The requested protocol</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="external_port" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="222">the external port requested in gupnp_simple_igd_add_port()</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="local_ip" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="223">internal ip this is forwarded to</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="local_port" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="224">the local port</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="description" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="225">the passed description</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </glib:signal>
      <glib:signal name="mapped-external-port" when="last">
        <doc xml:space="preserve"
             filename="libgupnp-igd/gupnp-simple-igd.c"
             line="191">This signal means that an IGD has been found that that adding a port
mapping has succeeded.</doc>
        <return-value transfer-ownership="none">
          <type name="none" c:type="void"/>
        </return-value>
        <parameters>
          <parameter name="proto" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="194">the requested protocol ("UDP" or "TCP")</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="external_ip" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="195">the external IP</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="replaces_external_ip" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="196">if this mapping replaces another mapping,
 this is the old external IP</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="external_port" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="198">the external port that was allocated</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="local_ip" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="199">IP address that the router should forward the packets to. It
 could be the address of another machine on the local network</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
          <parameter name="local_port" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="201">the local port</doc>
            <type name="guint" c:type="guint"/>
          </parameter>
          <parameter name="description" transfer-ownership="none">
            <doc xml:space="preserve"
                 filename="libgupnp-igd/gupnp-simple-igd.c"
                 line="202">the user's selected description</doc>
            <type name="utf8" c:type="gchar*"/>
          </parameter>
        </parameters>
      </glib:signal>
    </class>
    <record name="SimpleIgdClass"
            c:type="GUPnPSimpleIgdClass"
            disguised="1"
            glib:is-gtype-struct-for="SimpleIgd">
      <source-position filename="libgupnp-igd/gupnp-simple-igd.h" line="51"/>
    </record>
    <enumeration name="SimpleIgdError" c:type="GUPnPSimpleIgdError">
      <doc xml:space="preserve"
           filename="libgupnp-igd/gupnp-simple-igd.h"
           line="76">Errors coming out of the GUPnPSimpleIGD object.</doc>
      <source-position filename="libgupnp-igd/gupnp-simple-igd.h" line="86"/>
      <member name="simple_igd_error_external_address"
              value="0"
              c:identifier="GUPNP_SIMPLE_IGD_ERROR_EXTERNAL_ADDRESS">
        <doc xml:space="preserve"
             filename="libgupnp-igd/gupnp-simple-igd.h"
             line="78">Error getting the external
address of the router</doc>
      </member>
    </enumeration>
    <record name="SimpleIgdPrivate"
            c:type="GUPnPSimpleIgdPrivate"
            disguised="1">
      <source-position filename="libgupnp-igd/gupnp-simple-igd.h" line="52"/>
    </record>
    <class name="SimpleIgdThread"
           c:symbol-prefix="simple_igd_thread"
           c:type="GUPnPSimpleIgdThread"
           parent="SimpleIgd"
           glib:type-name="GUPnPSimpleIgdThread"
           glib:get-type="gupnp_simple_igd_thread_get_type"
           glib:type-struct="SimpleIgdThreadClass">
      <doc xml:space="preserve"
           filename="libgupnp-igd/gupnp-simple-igd-thread.h"
           line="54">All members are private, access them using methods and properties</doc>
      <source-position filename="libgupnp-igd/gupnp-simple-igd-thread.h"
                       line="50"/>
      <constructor name="new" c:identifier="gupnp_simple_igd_thread_new">
        <doc xml:space="preserve"
             filename="libgupnp-igd/gupnp-simple-igd-thread.c"
             line="550">Creates a new #GUPnPSimpleIgdThread</doc>
        <source-position filename="libgupnp-igd/gupnp-simple-igd-thread.h"
                         line="70"/>
        <return-value transfer-ownership="full">
          <doc xml:space="preserve"
               filename="libgupnp-igd/gupnp-simple-igd-thread.c"
               line="555">the new #GUPnPSimpleIgdThread</doc>
          <type name="SimpleIgdThread" c:type="GUPnPSimpleIgdThread*"/>
        </return-value>
      </constructor>
      <field name="parent">
        <type name="SimpleIgd" c:type="GUPnPSimpleIgd"/>
      </field>
      <field name="priv" readable="0" private="1">
        <type name="SimpleIgdThreadPrivate"
              c:type="GUPnPSimpleIgdThreadPrivate*"/>
      </field>
    </class>
    <record name="SimpleIgdThreadClass"
            c:type="GUPnPSimpleIgdThreadClass"
            disguised="1"
            glib:is-gtype-struct-for="SimpleIgdThread">
      <doc xml:space="preserve"
           filename="libgupnp-igd/gupnp-simple-igd-thread.c"
           line="41">The Raw UDP component transmitter class</doc>
      <source-position filename="libgupnp-igd/gupnp-simple-igd-thread.h"
                       line="50"/>
    </record>
    <record name="SimpleIgdThreadPrivate"
            c:type="GUPnPSimpleIgdThreadPrivate"
            disguised="1">
      <source-position filename="libgupnp-igd/gupnp-simple-igd-thread.h"
                       line="51"/>
    </record>
    <docsection name="gupnp-simple-igd">
      <doc xml:space="preserve"
           filename="libgupnp-igd/gupnp-simple-igd.c"
           line="24">This simple class allows applications to map ports on UPnP routers.
It implements the basic functionalities to map ports to external ports.
It also allows implementations to know the external port from the router's
perspective.

Every call to this object, including its creation, MUST always be done
using the same thread local #GMainContext pushed via
g_main_context_push_thread_default();</doc>
    </docsection>
    <docsection name="gupnp-simple-igd-thread">
      <doc xml:space="preserve"
           filename="libgupnp-igd/gupnp-simple-igd-thread.c"
           line="24">This wraps a #GUPnPSimpleIgd into a thread so that it can be used without
having a #GMainLoop running.</doc>
    </docsection>
  </namespace>
</repository>
