move the device event broadcasts outside of the set_state callback
[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 }