1 /* 2 * netifd - network interface daemon 3 * Copyright (C) 2012 Felix Fietkau <nbd@openwrt.org> 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License version 2 7 * as published by the Free Software Foundation 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 */ 14 #ifndef __NETIFD_PROTO_H 15 #define __NETIFD_PROTO_H 16 17 struct interface; 18 struct interface_proto_state; 19 struct proto_handler; 20 21 enum interface_proto_event { 22 IFPEV_UP, 23 IFPEV_DOWN, 24 IFPEV_LINK_LOST, 25 IFPEV_RENEW, 26 }; 27 28 enum interface_proto_cmd { 29 PROTO_CMD_SETUP, 30 PROTO_CMD_TEARDOWN, 31 PROTO_CMD_RENEW, 32 }; 33 34 enum { 35 PROTO_FLAG_IMMEDIATE = (1 << 0), 36 PROTO_FLAG_NODEV = (1 << 1), 37 PROTO_FLAG_INIT_AVAILABLE = (1 << 2), 38 PROTO_FLAG_RENEW_AVAILABLE = (1 << 3), 39 PROTO_FLAG_FORCE_LINK_DEFAULT = (1 << 4), 40 PROTO_FLAG_LASTERROR = (1 << 5), 41 PROTO_FLAG_TEARDOWN_ON_L3_LINK_DOWN = (1 << 6), 42 PROTO_FLAG_NO_TASK = (1 << 7), 43 }; 44 45 struct interface_proto_state { 46 const struct proto_handler *handler; 47 struct interface *iface; 48 49 /* filled in by the protocol user */ 50 void (*proto_event)(struct interface_proto_state *, enum interface_proto_event ev); 51 52 /* filled in by the protocol handler */ 53 int (*notify)(struct interface_proto_state *, struct blob_attr *data); 54 int (*cb)(struct interface_proto_state *, enum interface_proto_cmd cmd, bool force); 55 void (*free)(struct interface_proto_state *); 56 }; 57 58 59 struct proto_handler { 60 struct avl_node avl; 61 62 unsigned int flags; 63 64 const char *name; 65 const struct uci_blob_param_list *config_params; 66 67 struct interface_proto_state *(*attach)(const struct proto_handler *h, 68 struct interface *iface, struct blob_attr *attr); 69 }; 70 71 extern const struct uci_blob_param_list proto_ip_attr; 72 73 void add_proto_handler(struct proto_handler *p); 74 void proto_init_interface(struct interface *iface, struct blob_attr *attr); 75 void proto_attach_interface(struct interface *iface, const char *proto_name); 76 int interface_proto_event(struct interface_proto_state *proto, 77 enum interface_proto_cmd cmd, bool force); 78 79 unsigned int parse_netmask_string(const char *str, bool v6); 80 int proto_apply_static_ip_settings(struct interface *iface, struct blob_attr *attr); 81 int proto_apply_ip_settings(struct interface *iface, struct blob_attr *attr, bool ext); 82 void proto_dump_handlers(struct blob_buf *b); 83 void proto_shell_init(void); 84 85 #endif 86
This page was automatically generated by LXR 0.3.1. • OpenWrt