You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
suricata/src/app-layer-protos.c

134 lines
4.1 KiB
C

/* Copyright (C) 2007-2013 Open Information Security Foundation
*
* You can copy, redistribute or modify this Program under the terms of
* the GNU General Public License version 2 as published by the Free
* Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* version 2 along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301, USA.
*/
/**
* \file
*
* \author Victor Julien <victor@inliniac.net>
* \author Anoop Saldanha <anoopsaldanha@gmail.com>
*/
#include "suricata-common.h"
#include "app-layer-protos.h"
#define CASE_CODE(E) case E: return #E
const char *AppProtoToString(AppProto alproto)
{
const char *proto_name = NULL;
enum AppProtoEnum proto = alproto;
switch (proto) {
case ALPROTO_HTTP:
proto_name = "http";
break;
case ALPROTO_FTP:
proto_name = "ftp";
break;
case ALPROTO_SMTP:
proto_name = "smtp";
break;
case ALPROTO_TLS:
proto_name = "tls";
break;
case ALPROTO_SSH:
proto_name = "ssh";
break;
case ALPROTO_IMAP:
proto_name = "imap";
break;
case ALPROTO_MSN:
proto_name = "msn";
break;
case ALPROTO_JABBER:
proto_name = "jabber";
break;
case ALPROTO_SMB:
proto_name = "smb";
break;
case ALPROTO_SMB2:
proto_name = "smb2";
break;
case ALPROTO_DCERPC:
proto_name = "dcerpc";
break;
case ALPROTO_IRC:
proto_name = "irc";
break;
case ALPROTO_DNS:
proto_name = "dns";
break;
case ALPROTO_MODBUS:
proto_name = "modbus";
break;
case ALPROTO_ENIP:
proto_name = "enip";
break;
case ALPROTO_DNP3:
proto_name = "dnp3";
break;
case ALPROTO_NFS:
proto_name = "nfs";
break;
case ALPROTO_NTP:
proto_name = "ntp";
break;
case ALPROTO_TEMPLATE:
proto_name = "template";
break;
case ALPROTO_FAILED:
proto_name = "failed";
break;
#ifdef UNITTESTS
case ALPROTO_TEST:
#endif
case ALPROTO_MAX:
case ALPROTO_UNKNOWN:
break;
}
return proto_name;
}
AppProto StringToAppProto(const char *proto_name)
{
if (proto_name == NULL) return ALPROTO_UNKNOWN;
if (strcmp(proto_name,"http")==0) return ALPROTO_HTTP;
if (strcmp(proto_name,"ftp")==0) return ALPROTO_FTP;
if (strcmp(proto_name,"smtp")==0) return ALPROTO_SMTP;
if (strcmp(proto_name,"tls")==0) return ALPROTO_TLS;
if (strcmp(proto_name,"ssh")==0) return ALPROTO_SSH;
if (strcmp(proto_name,"imap")==0) return ALPROTO_IMAP;
if (strcmp(proto_name,"msn")==0) return ALPROTO_MSN;
if (strcmp(proto_name,"jabber")==0) return ALPROTO_JABBER;
if (strcmp(proto_name,"smb")==0) return ALPROTO_SMB;
if (strcmp(proto_name,"smb2")==0) return ALPROTO_SMB2;
if (strcmp(proto_name,"dcerpc")==0) return ALPROTO_DCERPC;
if (strcmp(proto_name,"irc")==0) return ALPROTO_IRC;
if (strcmp(proto_name,"dns")==0) return ALPROTO_DNS;
if (strcmp(proto_name,"modbus")==0) return ALPROTO_MODBUS;
if (strcmp(proto_name,"enip")==0) return ALPROTO_ENIP;
if (strcmp(proto_name,"dnp3")==0) return ALPROTO_DNP3;
if (strcmp(proto_name,"nfs")==0) return ALPROTO_NFS;
if (strcmp(proto_name,"ntp")==0) return ALPROTO_NTP;
if (strcmp(proto_name,"template")==0) return ALPROTO_TEMPLATE;
if (strcmp(proto_name,"failed")==0) return ALPROTO_FAILED;
return ALPROTO_UNKNOWN;
}