• source navigation  • diff markup  • identifier search  • freetext search  • 

Sources/netifd/proto.h

  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