FreeBSD kernel IPv4 code
alias_skinny.c File Reference
#include <sys/param.h>
#include <sys/kernel.h>
#include <sys/module.h>
#include <netinet/in_systm.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <netinet/tcp.h>
#include <netinet/libalias/alias_local.h>
#include <netinet/libalias/alias_mod.h>
Include dependency graph for alias_skinny.c:

Go to the source code of this file.

Data Structures

struct  skinny_header
 
struct  RegisterMessage
 
struct  IpPortMessage
 
struct  OpenReceiveChannelAck
 
struct  StartMediaTransmission
 

Macros

#define REG_MSG   0x00000001
 
#define IP_PORT_MSG   0x00000002
 
#define OPNRCVCH_ACK   0x00000022
 
#define START_MEDIATX   0x0000008a
 

Enumerations

enum  ConvDirection { ClientToServer = 0 , ServerToClient = 1 }
 

Functions

static void AliasHandleSkinny (struct libalias *, struct ip *, struct alias_link *)
 
static int fingerprint (struct libalias *la, struct alias_data *ah)
 
static int protohandler (struct libalias *la, struct ip *pip, struct alias_data *ah)
 
static int mod_handler (module_t mod, int type, void *data)
 
 DECLARE_MODULE (alias_skinny, alias_mod, SI_SUB_DRIVERS, SI_ORDER_SECOND)
 
 MODULE_VERSION (alias_skinny, 1)
 
 MODULE_DEPEND (alias_skinny, libalias, 1, 1, 1)
 
static int alias_skinny_reg_msg (struct RegisterMessage *reg_msg, struct ip *pip, struct tcphdr *tc, struct alias_link *lnk, ConvDirection direction)
 
static int alias_skinny_startmedia (struct StartMediaTransmission *start_media, struct ip *pip, struct tcphdr *tc, struct alias_link *lnk, u_int32_t localIpAddr, ConvDirection direction)
 
static int alias_skinny_port_msg (struct IpPortMessage *port_msg, struct ip *pip, struct tcphdr *tc, struct alias_link *lnk, ConvDirection direction)
 
static int alias_skinny_opnrcvch_ack (struct libalias *la, struct OpenReceiveChannelAck *opnrcvch_ack, struct ip *pip, struct tcphdr *tc, struct alias_link *lnk, u_int32_t *localIpAddr, ConvDirection direction)
 

Variables

struct proto_handler handlers []
 
static moduledata_t alias_mod
 

Macro Definition Documentation

◆ IP_PORT_MSG

#define IP_PORT_MSG   0x00000002

Definition at line 155 of file alias_skinny.c.

◆ OPNRCVCH_ACK

#define OPNRCVCH_ACK   0x00000022

Definition at line 156 of file alias_skinny.c.

◆ REG_MSG

#define REG_MSG   0x00000001

Definition at line 154 of file alias_skinny.c.

◆ START_MEDIATX

#define START_MEDIATX   0x0000008a

Definition at line 157 of file alias_skinny.c.

Enumeration Type Documentation

◆ ConvDirection

Enumerator
ClientToServer 
ServerToClient 

Definition at line 203 of file alias_skinny.c.

Function Documentation

◆ alias_skinny_opnrcvch_ack()

static int alias_skinny_opnrcvch_ack ( struct libalias la,
struct OpenReceiveChannelAck opnrcvch_ack,
struct ip pip,
struct tcphdr *  tc,
struct alias_link lnk,
u_int32_t *  localIpAddr,
ConvDirection  direction 
)
static

Definition at line 270 of file alias_skinny.c.

References FindUdpTcpOut(), GetAliasAddress(), GetAliasPort(), INADDR_ANY, OpenReceiveChannelAck::ipAddr, IPPROTO_UDP, alias_link::la, OpenReceiveChannelAck::port, and in_addr::s_addr.

Referenced by AliasHandleSkinny().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ alias_skinny_port_msg()

static int alias_skinny_port_msg ( struct IpPortMessage port_msg,
struct ip pip,
struct tcphdr *  tc,
struct alias_link lnk,
ConvDirection  direction 
)
static

Definition at line 252 of file alias_skinny.c.

References GetAliasPort(), and IpPortMessage::stationIpPort.

Referenced by AliasHandleSkinny().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ alias_skinny_reg_msg()

static int alias_skinny_reg_msg ( struct RegisterMessage reg_msg,
struct ip pip,
struct tcphdr *  tc,
struct alias_link lnk,
ConvDirection  direction 
)
static

Definition at line 209 of file alias_skinny.c.

References GetAliasAddress(), RegisterMessage::ipAddr, and in_addr::s_addr.

Referenced by AliasHandleSkinny().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ alias_skinny_startmedia()

static int alias_skinny_startmedia ( struct StartMediaTransmission start_media,
struct ip pip,
struct tcphdr *  tc,
struct alias_link lnk,
u_int32_t  localIpAddr,
ConvDirection  direction 
)
static

Definition at line 228 of file alias_skinny.c.

References StartMediaTransmission::remoteIpAddr, and in_addr::s_addr.

Referenced by AliasHandleSkinny().

Here is the caller graph for this function:

◆ AliasHandleSkinny()

static void AliasHandleSkinny ( struct libalias la,
struct ip pip,
struct alias_link lnk 
)
static

◆ DECLARE_MODULE()

DECLARE_MODULE ( alias_skinny  ,
alias_mod  ,
SI_SUB_DRIVERS  ,
SI_ORDER_SECOND   
)

◆ fingerprint()

static int fingerprint ( struct libalias la,
struct alias_data ah 
)
static

◆ mod_handler()

static int mod_handler ( module_t  mod,
int  type,
void *  data 
)
static

Definition at line 91 of file alias_skinny.c.

References handlers, LibAliasAttachHandlers(), and LibAliasDetachHandlers().

Here is the call graph for this function:

◆ MODULE_DEPEND()

MODULE_DEPEND ( alias_skinny  ,
libalias  ,
,
,
 
)

◆ MODULE_VERSION()

MODULE_VERSION ( alias_skinny  ,
 
)

◆ protohandler()

static int protohandler ( struct libalias la,
struct ip pip,
struct alias_data ah 
)
static

Definition at line 73 of file alias_skinny.c.

References AliasHandleSkinny(), and alias_data::lnk.

Here is the call graph for this function:

Variable Documentation

◆ alias_mod

moduledata_t alias_mod
static
Initial value:
= {
"alias_skinny", mod_handler, NULL
}
static int mod_handler(module_t mod, int type, void *data)
Definition: alias_skinny.c:91

Definition at line 113 of file alias_skinny.c.

◆ handlers

struct proto_handler handlers[]
Initial value:
= {
{
.pri = 110,
.dir = IN|OUT,
.proto = TCP,
.fingerprint = &fingerprint,
.protohandler = &protohandler
},
{ EOH }
}
#define TCP
Definition: alias_mod.h:58
#define EOH
Definition: alias_mod.h:92
#define IN
Definition: alias_mod.h:52
#define OUT
Definition: alias_mod.h:53
static int fingerprint(struct libalias *la, struct alias_data *ah)
Definition: alias_skinny.c:62
static int protohandler(struct libalias *la, struct ip *pip, struct alias_data *ah)
Definition: alias_skinny.c:73

Definition at line 79 of file alias_skinny.c.

Referenced by mod_handler().