linux/include/rdma/iw_portmap.h
<<
>>
Prefs
   1/*
   2 * Copyright (c) 2014 Intel Corporation. All rights reserved.
   3 * Copyright (c) 2014 Chelsio, Inc. All rights reserved.
   4 *
   5 * This software is available to you under a choice of one of two
   6 * licenses.  You may choose to be licensed under the terms of the GNU
   7 * General Public License (GPL) Version 2, available from the file
   8 * COPYING in the main directory of this source tree, or the
   9 * OpenIB.org BSD license below:
  10 *
  11 *     Redistribution and use in source and binary forms, with or
  12 *     without modification, are permitted provided that the following
  13 *     conditions are met:
  14 *
  15 *      - Redistributions of source code must retain the above
  16 *        copyright notice, this list of conditions and the following
  17 *        disclaimer.
  18 *
  19 *      - Redistributions in binary form must reproduce the above
  20 *        copyright notice, this list of conditions and the following
  21 *        disclaimer in the documentation and/or other materials
  22 *        provided with the distribution.
  23 *
  24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  25 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  26 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  27 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
  28 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  29 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  30 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  31 * SOFTWARE.
  32 */
  33#ifndef _IW_PORTMAP_H
  34#define _IW_PORTMAP_H
  35
  36#define IWPM_ULIBNAME_SIZE      32
  37#define IWPM_DEVNAME_SIZE       32
  38#define IWPM_IFNAME_SIZE        16
  39#define IWPM_IPADDR_SIZE        16
  40
  41enum {
  42        IWPM_INVALID_NLMSG_ERR = 10,
  43        IWPM_CREATE_MAPPING_ERR,
  44        IWPM_DUPLICATE_MAPPING_ERR,
  45        IWPM_UNKNOWN_MAPPING_ERR,
  46        IWPM_CLIENT_DEV_INFO_ERR,
  47        IWPM_USER_LIB_INFO_ERR,
  48        IWPM_REMOTE_QUERY_REJECT
  49};
  50
  51struct iwpm_dev_data {
  52        char dev_name[IWPM_DEVNAME_SIZE];
  53        char if_name[IWPM_IFNAME_SIZE];
  54};
  55
  56struct iwpm_sa_data {
  57        struct sockaddr_storage loc_addr;
  58        struct sockaddr_storage mapped_loc_addr;
  59        struct sockaddr_storage rem_addr;
  60        struct sockaddr_storage mapped_rem_addr;
  61        u32 flags;
  62};
  63
  64int iwpm_init(u8);
  65int iwpm_exit(u8);
  66int iwpm_valid_pid(void);
  67int iwpm_register_pid(struct iwpm_dev_data *pm_msg, u8 nl_client);
  68int iwpm_add_mapping(struct iwpm_sa_data *pm_msg, u8 nl_client);
  69int iwpm_add_and_query_mapping(struct iwpm_sa_data *pm_msg, u8 nl_client);
  70int iwpm_remove_mapping(struct sockaddr_storage *local_addr, u8 nl_client);
  71int iwpm_register_pid_cb(struct sk_buff *, struct netlink_callback *);
  72int iwpm_add_mapping_cb(struct sk_buff *, struct netlink_callback *);
  73int iwpm_add_and_query_mapping_cb(struct sk_buff *, struct netlink_callback *);
  74int iwpm_remote_info_cb(struct sk_buff *, struct netlink_callback *);
  75int iwpm_mapping_error_cb(struct sk_buff *, struct netlink_callback *);
  76int iwpm_mapping_info_cb(struct sk_buff *, struct netlink_callback *);
  77int iwpm_ack_mapping_info_cb(struct sk_buff *, struct netlink_callback *);
  78int iwpm_get_remote_info(struct sockaddr_storage *mapped_loc_addr,
  79                        struct sockaddr_storage *mapped_rem_addr,
  80                        struct sockaddr_storage *remote_addr, u8 nl_client);
  81int iwpm_create_mapinfo(struct sockaddr_storage *local_addr,
  82                        struct sockaddr_storage *mapped_addr, u8 nl_client,
  83                        u32 map_flags);
  84int iwpm_remove_mapinfo(struct sockaddr_storage *local_addr,
  85                        struct sockaddr_storage *mapped_addr);
  86
  87int iwpm_hello_cb(struct sk_buff *skb, struct netlink_callback *cb);
  88#endif /* _IW_PORTMAP_H */
  89