projects
/
project
/
netifd.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
0b29011
)
add an interface for notifying protocol handlers of state changes via ubus
author
Felix Fietkau
<nbd@openwrt.org>
Sun, 11 Sep 2011 14:29:43 +0000
(16:29 +0200)
committer
Felix Fietkau
<nbd@openwrt.org>
Sun, 11 Sep 2011 14:29:43 +0000
(16:29 +0200)
proto.h
patch
|
blob
|
history
ubus.c
patch
|
blob
|
history
diff --git
a/proto.h
b/proto.h
index
e066b43
..
c1b97b2
100644
(file)
--- a/
proto.h
+++ b/
proto.h
@@
-28,6
+28,7
@@
struct interface_proto_state {
void (*proto_event)(struct interface_proto_state *, enum interface_proto_event ev);
/* filled in by the protocol handler */
void (*proto_event)(struct interface_proto_state *, enum interface_proto_event ev);
/* filled in by the protocol handler */
+ int (*notify)(struct interface_proto_state *, struct blob_attr *data);
int (*cb)(struct interface_proto_state *, enum interface_proto_cmd cmd, bool force);
void (*free)(struct interface_proto_state *);
};
int (*cb)(struct interface_proto_state *, enum interface_proto_cmd cmd, bool force);
void (*free)(struct interface_proto_state *);
};
diff --git
a/ubus.c
b/ubus.c
index
c8f178c
..
a8d3e3c
100644
(file)
--- a/
ubus.c
+++ b/
ubus.c
@@
-2,6
+2,7
@@
#include "netifd.h"
#include "interface.h"
#include "netifd.h"
#include "interface.h"
+#include "proto.h"
#include "ubus.h"
static struct ubus_context *ctx = NULL;
#include "ubus.h"
static struct ubus_context *ctx = NULL;
@@
-241,6
+242,21
@@
netifd_iface_handle_device(struct ubus_context *ctx, struct ubus_object *obj,
}
}
+static int
+netifd_iface_notify_proto(struct ubus_context *ctx, struct ubus_object *obj,
+ struct ubus_request_data *req, const char *method,
+ struct blob_attr *msg)
+{
+ struct interface *iface;
+
+ iface = container_of(obj, struct interface, ubus);
+
+ if (!iface->proto || !iface->proto->notify)
+ return UBUS_STATUS_NOT_SUPPORTED;
+
+ return iface->proto->notify(iface->proto, msg);
+}
+
static struct ubus_method iface_object_methods[] = {
{ .name = "up", .handler = netifd_handle_up },
{ .name = "down", .handler = netifd_handle_down },
static struct ubus_method iface_object_methods[] = {
{ .name = "up", .handler = netifd_handle_up },
{ .name = "down", .handler = netifd_handle_down },
@@
-249,6
+265,7
@@
static struct ubus_method iface_object_methods[] = {
.policy = dev_policy, .n_policy = __DEV_MAX_NOFORCE },
{ .name = "remove_device", .handler = netifd_iface_handle_device,
.policy = dev_policy, .n_policy = __DEV_MAX_NOFORCE },
.policy = dev_policy, .n_policy = __DEV_MAX_NOFORCE },
{ .name = "remove_device", .handler = netifd_iface_handle_device,
.policy = dev_policy, .n_policy = __DEV_MAX_NOFORCE },
+ { .name = "notify_proto", .handler = netifd_iface_notify_proto },
};
static struct ubus_object_type iface_object_type =
};
static struct ubus_object_type iface_object_type =