#ifndef __UNETD_SERVICE_H
#define __UNETD_SERVICE_H
+struct vxlan_tunnel;
+struct service_ops;
+
struct network_service {
struct vlist_node node;
struct blob_attr *config;
+
const char *type;
+ const struct service_ops *ops;
+ union {
+ struct vxlan_tunnel *vxlan;
+ void *priv;
+ };
+
int n_members;
struct network_host *members[];
};
+struct service_ops {
+ void (*init)(struct network *net,
+ struct network_service *s_new,
+ struct network_service *s_old);
+ void (*peer_update)(struct network *net, struct network_service *s,
+ struct network_peer *peer);
+ void (*free)(struct network *net, struct network_service *s);
+};
+
+extern const struct service_ops vxlan_ops;
+
+static inline const char *
+network_service_name(struct network_service *s)
+{
+ return s->node.avl.key;
+}
+
void network_services_init(struct network *net);
void network_services_free(struct network *net);
void network_services_add(struct network *net, struct blob_attr *data);
+void network_services_peer_update(struct network *net, struct network_peer *peer);
static inline void network_services_update_start(struct network *net)
{