/*
* routeup.h - routeup library interface
* Copyright (c) 2012 The Chromium Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*
* Call routeup_setup() to initialize a routeup context, then call
* routeup_once() until it returns nonzero (indicating an error) or until
* you're no longer interested in route changes. Call routeup_teardown()
* when you're done with an routeup context.
*/
#ifndef ROUTEUP_H
#define ROUTEUP_H
struct routeup
{
int netlinkfd; /* AF_NETLINK event socket */
};
#ifdef TARGET_OS_LINUX
int routeup_setup (struct routeup *ifc);
int routeup_once (struct routeup *ifc, unsigned int timeout);
int routeup_process (struct routeup *rtc);
void routeup_teardown (struct routeup *ifc);
#else
static inline int routeup_setup (struct routeup *ifc)
{
return 1; /* Fail for platforms without support. */
}
static inline int routeup_once (struct routeup *ifc, unsigned int timeout)
{
return -1;
}
static inline int routeup_process (struct routeup *rtc)
{
return -1;
}
static inline void routeup_teardown (struct routeup *ifc)
{
}
#endif
#endif /* !ROUTEUP_H */