Class UpnpIgdPortMapping
- java.lang.Object
-
- org.drasyl.handler.remote.portmapper.UpnpIgdPortMapping
-
- All Implemented Interfaces:
PortMapping
public class UpnpIgdPortMapping extends Object implements PortMapping
Port Forwarding on NAT-enabled routers via UPnP-IGD.This methods requires the following steps:
- SSDP: do a discovery to find internet gateway devices
- UPnP: request service information from each discovered gateway
- UPnP: check if device is connected and has an external ip address
- UPnP: check for existing port mapping and reuse it
- UPnP: if there is no port mapping, create a new one
-
-
Constructor Summary
Constructors Constructor Description UpnpIgdPortMapping()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
acceptMessage(InetSocketAddress sender, io.netty.buffer.ByteBuf msg)
Is called for incoming messages and returns true if the message should be consumed and removed from the pipeline.void
handleMessage(io.netty.channel.ChannelHandlerContext ctx, InetSocketAddress sender, io.netty.buffer.ByteBuf msg)
Is called for incoming messages and thus enables this method to react to relevant messages.void
start(io.netty.channel.ChannelHandlerContext ctx, int port, Runnable onFailure)
Tells the method to create a port forwarding and renew it independently.void
stop(io.netty.channel.ChannelHandlerContext ctx)
Shall remove any existing port forwarding again.String
toString()
-
-
-
Field Detail
-
TIMEOUT
public static final Duration TIMEOUT
-
-
Method Detail
-
start
public void start(io.netty.channel.ChannelHandlerContext ctx, int port, Runnable onFailure)
Description copied from interface:PortMapping
Tells the method to create a port forwarding and renew it independently. If no forwarding can be created,onFailure
must be called once.- Specified by:
start
in interfacePortMapping
- Parameters:
ctx
- the handler contextport
- theUdpServer.Port
portonFailure
- will be called once on failure
-
stop
public void stop(io.netty.channel.ChannelHandlerContext ctx)
Description copied from interface:PortMapping
Shall remove any existing port forwarding again.- Specified by:
stop
in interfacePortMapping
- Parameters:
ctx
- the handler context
-
acceptMessage
public boolean acceptMessage(InetSocketAddress sender, io.netty.buffer.ByteBuf msg)
Description copied from interface:PortMapping
Is called for incoming messages and returns true if the message should be consumed and removed from the pipeline.- Specified by:
acceptMessage
in interfacePortMapping
- Parameters:
sender
- the sender of the messagemsg
- the message- Returns:
true
if the message is relevant for the current port forwarding method. Otherwisefalse
-
handleMessage
public void handleMessage(io.netty.channel.ChannelHandlerContext ctx, InetSocketAddress sender, io.netty.buffer.ByteBuf msg)
Description copied from interface:PortMapping
Is called for incoming messages and thus enables this method to react to relevant messages.ReferenceCounted.release()
ownership ofmsg
is transferred to thisPartialReadMessage
.- Specified by:
handleMessage
in interfacePortMapping
- Parameters:
ctx
- the handler contextsender
- the sender of the messagemsg
- the message
-
-