144d362409d5469aed47d19e7908d19bd194493aThomas Graf/*
244d362409d5469aed47d19e7908d19bd194493aThomas Graf * netlink/route/neightbl.h	Neighbour Tables
344d362409d5469aed47d19e7908d19bd194493aThomas Graf *
444d362409d5469aed47d19e7908d19bd194493aThomas Graf *	This library is free software; you can redistribute it and/or
544d362409d5469aed47d19e7908d19bd194493aThomas Graf *	modify it under the terms of the GNU Lesser General Public
644d362409d5469aed47d19e7908d19bd194493aThomas Graf *	License as published by the Free Software Foundation version 2.1
744d362409d5469aed47d19e7908d19bd194493aThomas Graf *	of the License.
844d362409d5469aed47d19e7908d19bd194493aThomas Graf *
98a3efffa5b3fde252675239914118664d36a2c24Thomas Graf * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch>
1044d362409d5469aed47d19e7908d19bd194493aThomas Graf */
1144d362409d5469aed47d19e7908d19bd194493aThomas Graf
1244d362409d5469aed47d19e7908d19bd194493aThomas Graf#ifndef NETLINK_NEIGHTBL_H_
1344d362409d5469aed47d19e7908d19bd194493aThomas Graf#define NETLINK_NEIGHTBL_H_
1444d362409d5469aed47d19e7908d19bd194493aThomas Graf
1544d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/netlink.h>
1644d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/cache.h>
1744d362409d5469aed47d19e7908d19bd194493aThomas Graf#include <netlink/addr.h>
1844d362409d5469aed47d19e7908d19bd194493aThomas Graf
1944d362409d5469aed47d19e7908d19bd194493aThomas Graf#ifdef __cplusplus
2044d362409d5469aed47d19e7908d19bd194493aThomas Grafextern "C" {
2144d362409d5469aed47d19e7908d19bd194493aThomas Graf#endif
2244d362409d5469aed47d19e7908d19bd194493aThomas Graf
2344d362409d5469aed47d19e7908d19bd194493aThomas Grafstruct rtnl_neightbl;
2444d362409d5469aed47d19e7908d19bd194493aThomas Graf
2544d362409d5469aed47d19e7908d19bd194493aThomas Grafextern struct rtnl_neightbl *rtnl_neightbl_alloc(void);
2644d362409d5469aed47d19e7908d19bd194493aThomas Grafextern void rtnl_neightbl_put(struct rtnl_neightbl *);
2744d362409d5469aed47d19e7908d19bd194493aThomas Grafextern void rtnl_neightbl_free(struct rtnl_neightbl *);
281155370f520cb64657e25153255cf7dc1424317fThomas Grafextern int rtnl_neightbl_alloc_cache(struct nl_sock *, struct nl_cache **);
2944d362409d5469aed47d19e7908d19bd194493aThomas Grafextern struct rtnl_neightbl *rtnl_neightbl_get(struct nl_cache *,
3044d362409d5469aed47d19e7908d19bd194493aThomas Graf					       const char *, int);
3144d362409d5469aed47d19e7908d19bd194493aThomas Grafextern void rtnl_neightbl_dump(struct rtnl_neightbl *, FILE *,
3244d362409d5469aed47d19e7908d19bd194493aThomas Graf			       struct nl_dump_params *);
3344d362409d5469aed47d19e7908d19bd194493aThomas Graf
348a3efffa5b3fde252675239914118664d36a2c24Thomas Grafextern int rtnl_neightbl_build_change_request(struct rtnl_neightbl *,
358a3efffa5b3fde252675239914118664d36a2c24Thomas Graf					      struct rtnl_neightbl *,
368a3efffa5b3fde252675239914118664d36a2c24Thomas Graf					      struct nl_msg **);
371155370f520cb64657e25153255cf7dc1424317fThomas Grafextern int rtnl_neightbl_change(struct nl_sock *, struct rtnl_neightbl *,
3844d362409d5469aed47d19e7908d19bd194493aThomas Graf				struct rtnl_neightbl *);
3944d362409d5469aed47d19e7908d19bd194493aThomas Graf
4044d362409d5469aed47d19e7908d19bd194493aThomas Grafextern void rtnl_neightbl_set_family(struct rtnl_neightbl *, int);
4144d362409d5469aed47d19e7908d19bd194493aThomas Grafextern void rtnl_neightbl_set_gc_tresh1(struct rtnl_neightbl *, int);
4244d362409d5469aed47d19e7908d19bd194493aThomas Grafextern void rtnl_neightbl_set_gc_tresh2(struct rtnl_neightbl *, int);
4344d362409d5469aed47d19e7908d19bd194493aThomas Grafextern void rtnl_neightbl_set_gc_tresh3(struct rtnl_neightbl *, int);
4444d362409d5469aed47d19e7908d19bd194493aThomas Grafextern void rtnl_neightbl_set_name(struct rtnl_neightbl *, const char *);
4544d362409d5469aed47d19e7908d19bd194493aThomas Grafextern void rtnl_neightbl_set_dev(struct rtnl_neightbl *, int);
4644d362409d5469aed47d19e7908d19bd194493aThomas Grafextern void rtnl_neightbl_set_queue_len(struct rtnl_neightbl *, int);
4744d362409d5469aed47d19e7908d19bd194493aThomas Grafextern void rtnl_neightbl_set_proxy_queue_len(struct rtnl_neightbl *, int);
4844d362409d5469aed47d19e7908d19bd194493aThomas Grafextern void rtnl_neightbl_set_app_probes(struct rtnl_neightbl *, int);
4944d362409d5469aed47d19e7908d19bd194493aThomas Grafextern void rtnl_neightbl_set_ucast_probes(struct rtnl_neightbl *, int);
5044d362409d5469aed47d19e7908d19bd194493aThomas Grafextern void rtnl_neightbl_set_mcast_probes(struct rtnl_neightbl *, int);
5144d362409d5469aed47d19e7908d19bd194493aThomas Grafextern void rtnl_neightbl_set_base_reachable_time(struct rtnl_neightbl *,
5244d362409d5469aed47d19e7908d19bd194493aThomas Graf						  uint64_t);
5344d362409d5469aed47d19e7908d19bd194493aThomas Grafextern void rtnl_neightbl_set_retrans_time(struct rtnl_neightbl *, uint64_t);
5444d362409d5469aed47d19e7908d19bd194493aThomas Grafextern void rtnl_neightbl_set_gc_stale_time(struct rtnl_neightbl *, uint64_t);
5544d362409d5469aed47d19e7908d19bd194493aThomas Grafextern void rtnl_neightbl_set_delay_probe_time(struct rtnl_neightbl *,
5644d362409d5469aed47d19e7908d19bd194493aThomas Graf					       uint64_t);
5744d362409d5469aed47d19e7908d19bd194493aThomas Grafextern void rtnl_neightbl_set_anycast_delay(struct rtnl_neightbl *, uint64_t);
5844d362409d5469aed47d19e7908d19bd194493aThomas Grafextern void rtnl_neightbl_set_proxy_delay(struct rtnl_neightbl *, uint64_t);
5944d362409d5469aed47d19e7908d19bd194493aThomas Grafextern void rtnl_neightbl_set_locktime(struct rtnl_neightbl *, uint64_t);
6044d362409d5469aed47d19e7908d19bd194493aThomas Graf
6144d362409d5469aed47d19e7908d19bd194493aThomas Graf#ifdef __cplusplus
6244d362409d5469aed47d19e7908d19bd194493aThomas Graf}
6344d362409d5469aed47d19e7908d19bd194493aThomas Graf#endif
6444d362409d5469aed47d19e7908d19bd194493aThomas Graf
6544d362409d5469aed47d19e7908d19bd194493aThomas Graf#endif
66