initial support to PPP protocol
[decrew:groink.git] / src / protocols / ppp.c
1 /*
2  * Copyright (c) Denatured Ethyl Crew
3  *
4  * This file is part of GroinK.
5  *
6  * GroinK is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * GroinK is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with GroinK.  If not, see <http://www.gnu.org/licenses/>.
18  */
19 #include "protos_name.h"
20 #include "protos.h"
21 #include "ppp.h"
22 #include "selib.h"
23
24 static int decode_ppp(packet_t *p, const _uint8 *bytes, size_t len)
25 {
26   ppp_t *ppp = (ppp_t *)bytes;
27   packet_append_header(p, PROTO_NAME_PPP, (void *)ppp, 0);
28
29   debug("PPP:");
30   debug("\t- FLAG: %d", (int)ppp->flag);
31   debug("\t- ADDR: %d", (int)ppp->addr);
32   debug("\t- CONTROL: %d", (int)ppp->control);
33   debug("\t- PROTO: %d", (int)ppp->proto);
34   debug("--------------------------------------------");
35
36   return DECODE_OK;
37 }
38
39 static int l_dissect_ppp(lua_State *L)
40 {
41   header_t *h = NULL;
42
43   h = check_header(L, 1);
44
45   lua_newtable(L);
46
47   /* lua_pushstring(L, "pkt_type"); */
48   /* lua_pushnumber(L, ntohs(sll->type)); */
49   /* lua_settable(L, -3); */
50
51   se_setro(L);
52
53   return 1;
54 }
55
56 void register_ppp()
57 {
58   proto_t *p = (proto_t *)safe_alloc(sizeof(proto_t));
59   p->name = PROTO_NAME_PPP;
60   p->longname = "Point To Point Protocol";
61   p->layer = L3;
62   p->decoder = decode_ppp;
63   p->dissect = l_dissect_ppp;
64   
65   proto_register_byname(PROTO_NAME_PPP, p);
66 }