FreeBSD kernel IPv4 code
alias_ftp.c File Reference
#include <sys/cdefs.h>
#include <sys/param.h>
#include <sys/ctype.h>
#include <sys/systm.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.h>
#include <netinet/libalias/alias_local.h>
#include <netinet/libalias/alias_mod.h>
Include dependency graph for alias_ftp.c:

Go to the source code of this file.

Macros

#define FTP_CONTROL_PORT_NUMBER   21
 
#define FTP_CONTROL_PORT_NUMBER   21
 
#define MAX_MESSAGE_SIZE   128
 
#define WAIT_CRLF   0x01
 

Enumerations

enum  ftp_message_type {
  FTP_PORT_COMMAND , FTP_EPRT_COMMAND , FTP_227_REPLY , FTP_229_REPLY ,
  FTP_UNKNOWN_MESSAGE
}
 

Functions

 __FBSDID ("$FreeBSD$")
 
static void AliasHandleFtpOut (struct libalias *, struct ip *, struct alias_link *, int maxpacketsize)
 
static void AliasHandleFtpIn (struct libalias *, struct ip *, struct alias_link *)
 
static int fingerprint_out (struct libalias *la, struct alias_data *ah)
 
static int fingerprint_in (struct libalias *la, struct alias_data *ah)
 
static int protohandler_out (struct libalias *la, struct ip *pip, struct alias_data *ah)
 
static int protohandler_in (struct libalias *la, struct ip *pip, struct alias_data *ah)
 
static int mod_handler (module_t mod, int type, void *data)
 
 DECLARE_MODULE (alias_ftp, alias_mod, SI_SUB_DRIVERS, SI_ORDER_SECOND)
 
 MODULE_VERSION (alias_ftp, 1)
 
 MODULE_DEPEND (alias_ftp, libalias, 1, 1, 1)
 
static int ParseFtpPortCommand (struct libalias *la, char *, int)
 
static int ParseFtpEprtCommand (struct libalias *la, char *, int)
 
static int ParseFtp227Reply (struct libalias *la, char *, int)
 
static int ParseFtp229Reply (struct libalias *la, char *, int)
 
static void NewFtpMessage (struct libalias *la, struct ip *, struct alias_link *, int, int)
 

Variables

struct proto_handler handlers []
 
static moduledata_t alias_mod
 

Macro Definition Documentation

◆ FTP_CONTROL_PORT_NUMBER [1/2]

#define FTP_CONTROL_PORT_NUMBER   21

Definition at line 197 of file alias_ftp.c.

◆ FTP_CONTROL_PORT_NUMBER [2/2]

#define FTP_CONTROL_PORT_NUMBER   21

Definition at line 197 of file alias_ftp.c.

◆ MAX_MESSAGE_SIZE

#define MAX_MESSAGE_SIZE   128

Definition at line 198 of file alias_ftp.c.

◆ WAIT_CRLF

#define WAIT_CRLF   0x01

Definition at line 201 of file alias_ftp.c.

Enumeration Type Documentation

◆ ftp_message_type

Enumerator
FTP_PORT_COMMAND 
FTP_EPRT_COMMAND 
FTP_227_REPLY 
FTP_229_REPLY 
FTP_UNKNOWN_MESSAGE 

Definition at line 203 of file alias_ftp.c.

Function Documentation

◆ __FBSDID()

__FBSDID ( "$FreeBSD$"  )

◆ AliasHandleFtpIn()

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

◆ AliasHandleFtpOut()

static void AliasHandleFtpOut ( struct libalias la,
struct ip pip,
struct alias_link lnk,
int  maxpacketsize 
)
static

◆ DECLARE_MODULE()

DECLARE_MODULE ( alias_ftp  ,
alias_mod  ,
SI_SUB_DRIVERS  ,
SI_ORDER_SECOND   
)

◆ fingerprint_in()

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

◆ fingerprint_out()

static int fingerprint_out ( 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 165 of file alias_ftp.c.

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

Here is the call graph for this function:

◆ MODULE_DEPEND()

MODULE_DEPEND ( alias_ftp  ,
libalias  ,
,
,
 
)

◆ MODULE_VERSION()

MODULE_VERSION ( alias_ftp  ,
 
)

◆ NewFtpMessage()

static void NewFtpMessage ( struct libalias la,
struct ip pip,
struct alias_link lnk,
int  maxpacketsize,
int  ftp_message_type 
)
static

◆ ParseFtp227Reply()

static int ParseFtp227Reply ( struct libalias la,
char *  sptr,
int  dlen 
)
static

Definition at line 494 of file alias_ftp.c.

References in_addr::s_addr, state, libalias::true_addr, and libalias::true_port.

Referenced by AliasHandleFtpOut().

Here is the caller graph for this function:

◆ ParseFtp229Reply()

static int ParseFtp229Reply ( struct libalias la,
char *  sptr,
int  dlen 
)
static

Definition at line 567 of file alias_ftp.c.

References state, and libalias::true_port.

Referenced by AliasHandleFtpOut().

Here is the caller graph for this function:

◆ ParseFtpEprtCommand()

static int ParseFtpEprtCommand ( struct libalias la,
char *  sptr,
int  dlen 
)
static

Definition at line 404 of file alias_ftp.c.

References in_addr::s_addr, state, libalias::true_addr, and libalias::true_port.

Referenced by AliasHandleFtpIn(), and AliasHandleFtpOut().

Here is the caller graph for this function:

◆ ParseFtpPortCommand()

static int ParseFtpPortCommand ( struct libalias la,
char *  sptr,
int  dlen 
)
static

Definition at line 331 of file alias_ftp.c.

References in_addr::s_addr, state, libalias::true_addr, and libalias::true_port.

Referenced by AliasHandleFtpIn(), and AliasHandleFtpOut().

Here is the caller graph for this function:

◆ protohandler_in()

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

Definition at line 140 of file alias_ftp.c.

References AliasHandleFtpIn(), and alias_data::lnk.

Here is the call graph for this function:

◆ protohandler_out()

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

Definition at line 133 of file alias_ftp.c.

References AliasHandleFtpOut(), alias_data::lnk, and alias_data::maxpktsize.

Here is the call graph for this function:

Variable Documentation

◆ alias_mod

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

Definition at line 187 of file alias_ftp.c.

◆ handlers

struct proto_handler handlers[]
Initial value:
= {
{
.pri = 80,
.dir = OUT,
.proto = TCP,
.fingerprint = &fingerprint_out,
.protohandler = &protohandler_out
},
{
.pri = 80,
.dir = IN,
.proto = TCP,
.fingerprint = &fingerprint_in,
.protohandler = &protohandler_in
},
{ EOH }
}
static int protohandler_in(struct libalias *la, struct ip *pip, struct alias_data *ah)
Definition: alias_ftp.c:140
static int fingerprint_out(struct libalias *la, struct alias_data *ah)
Definition: alias_ftp.c:110
static int protohandler_out(struct libalias *la, struct ip *pip, struct alias_data *ah)
Definition: alias_ftp.c:133
static int fingerprint_in(struct libalias *la, struct alias_data *ah)
Definition: alias_ftp.c:122
#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

Definition at line 146 of file alias_ftp.c.

Referenced by mod_handler().