Logo Search packages:      
Sourcecode: libnl version File versions  Download package

info-api.h

/*
 * netlink/route/link/info-api.h    Link Info API
 *
 *    This library is free software; you can redistribute it and/or
 *    modify it under the terms of the GNU Lesser General Public
 *    License as published by the Free Software Foundation version 2.1
 *    of the License.
 *
 * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
 */

#ifndef NETLINK_LINK_INFO_API_H_
#define NETLINK_LINK_INFO_API_H_

#include <netlink/netlink.h>

#ifdef __cplusplus
extern "C" {
#endif

/**
 * @ingroup link_info
 *
 * Link info operations
 */
00026 struct rtnl_link_info_ops
{
      /** Name of operations, must match name on kernel side */
00029       char *            io_name;

      /** Reference count (internal, do not use) */
00032       int         io_refcnt;

      /** Called to assign an info type to a link.
       * Has to allocate enough resources to hold attributes. Can
       * use link->l_info to store a pointer. */
00037       int         (*io_alloc)(struct rtnl_link *);

      /** Called to parse the link info attribute.
       * Must parse the attribute and assign all values to the link.
       */
00042       int         (*io_parse)(struct rtnl_link *,
                          struct nlattr *,
                          struct nlattr *);

      /** Called when the link object is dumped.
       * Must dump the info type specific attributes. */
00048       int         (*io_dump[NL_DUMP_MAX+1])(struct rtnl_link *,
                                    struct nl_dump_params *, int);

      /** Called when a link object is cloned.
       * Must clone all info type specific attributes. */
00053       int         (*io_clone)(struct rtnl_link *, struct rtnl_link *);

      /** Called when construction a link netlink message.
       * Must append all info type specific attributes to the message. */
00057       int         (*io_put_attrs)(struct nl_msg *, struct rtnl_link *);

      /** Called to release all resources previously allocated
       * in either io_alloc() or io_parse(). */
00061       void        (*io_free)(struct rtnl_link *);

      struct rtnl_link_info_ops *   io_next;
};

extern struct rtnl_link_info_ops *rtnl_link_info_ops_lookup(const char *);

extern int              rtnl_link_register_info(struct rtnl_link_info_ops *);
extern int              rtnl_link_unregister_info(struct rtnl_link_info_ops *);

#endif

Generated by  Doxygen 1.6.0   Back to index