2014-02-26 11:50:10 +04:00
|
|
|
/*
|
|
|
|
* Copyright (c) 2014 Cisco Systems, Inc. All rights reserved.
|
|
|
|
* $COPYRIGHT$
|
|
|
|
*
|
|
|
|
* Additional copyrights may follow
|
|
|
|
*
|
|
|
|
* $HEADER$
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef LIBNL_UTILS_H
|
|
|
|
#define LIBNL_UTILS_H
|
|
|
|
|
|
|
|
/* This header file and btl_usnic_libnl1_utils.c/btl_usnic_libnl3_utils.c are
|
|
|
|
* here to support OS routing lookups. They use the Linux "routing netlink"
|
|
|
|
* communication subsystem (see "man 7 rtnetlink") via the "libnl" helper
|
|
|
|
* library. Unfortunately, libnl comes in two major versions: libnl (v1) and
|
|
|
|
* libnl-3 with significant API differences between them.
|
|
|
|
*
|
|
|
|
* Quick glossary to some of the abbreviations here:
|
|
|
|
* rtnl -- rtnetlink (routing netlink)
|
|
|
|
* sk -- socket
|
|
|
|
*/
|
|
|
|
|
|
|
|
struct usnic_rtnl_sk;
|
|
|
|
|
|
|
|
/* returns zero on success or negative errno values on failure */
|
|
|
|
int ompi_btl_usnic_rtnl_sk_alloc(struct usnic_rtnl_sk **p_sk);
|
|
|
|
|
|
|
|
void ompi_btl_usnic_rtnl_sk_free(struct usnic_rtnl_sk* u_nlsk);
|
|
|
|
|
|
|
|
/* src_addr and dst_addr are IPv4 addresses in network byte order. Returns
|
|
|
|
* zero on successful route lookup, -1 otherwise. */
|
2014-06-26 02:39:02 +04:00
|
|
|
int ompi_btl_usnic_nl_ip_rt_lookup(struct usnic_rtnl_sk *unlsk,
|
|
|
|
const char *src_ifname,
|
|
|
|
uint32_t src_addr,
|
2014-02-26 11:50:10 +04:00
|
|
|
uint32_t dst_addr, int *metric);
|
|
|
|
|
|
|
|
#endif /* LIBNL_UTILS_H */
|