a345b35909dcda6105d354e665642324bc9e02a1
[project/netifd.git] / proto.c
1 #include <string.h>
2 #include <stdlib.h>
3 #include <stdio.h>
4
5 #include "netifd.h"
6 #include "proto.h"
7
8 static void
9 default_proto_free(struct interface_proto_state *proto)
10 {
11 free(proto);
12 }
13
14 static int
15 default_proto_handler(struct interface_proto_state *proto,
16 enum interface_proto_cmd cmd, bool force)
17 {
18 enum interface_event ev;
19
20 switch(cmd) {
21 case PROTO_CMD_SETUP:
22 ev = IFEV_UP;
23 break;
24 case PROTO_CMD_TEARDOWN:
25 ev = IFEV_DOWN;
26 break;
27 default:
28 return -EINVAL;
29 }
30 proto->proto_event(proto, ev);
31 return 0;
32 }
33
34 struct interface_proto_state *get_default_proto(void)
35 {
36 struct interface_proto_state *proto;
37
38 proto = calloc(1, sizeof(*proto));
39 proto->handler = default_proto_handler;
40 proto->free = default_proto_free;
41 return proto;
42 }