iw_portmap.h 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
  2. /*
  3. * Copyright (c) 2014 Intel Corporation. All rights reserved.
  4. * Copyright (c) 2014 Chelsio, Inc. All rights reserved.
  5. */
  6. #ifndef _IW_PORTMAP_H
  7. #define _IW_PORTMAP_H
  8. #include <linux/socket.h>
  9. #include <linux/netlink.h>
  10. #define IWPM_ULIBNAME_SIZE 32
  11. #define IWPM_DEVNAME_SIZE 32
  12. #define IWPM_IFNAME_SIZE 16
  13. #define IWPM_IPADDR_SIZE 16
  14. enum {
  15. IWPM_INVALID_NLMSG_ERR = 10,
  16. IWPM_CREATE_MAPPING_ERR,
  17. IWPM_DUPLICATE_MAPPING_ERR,
  18. IWPM_UNKNOWN_MAPPING_ERR,
  19. IWPM_CLIENT_DEV_INFO_ERR,
  20. IWPM_USER_LIB_INFO_ERR,
  21. IWPM_REMOTE_QUERY_REJECT
  22. };
  23. struct iwpm_dev_data {
  24. char dev_name[IWPM_DEVNAME_SIZE];
  25. char if_name[IWPM_IFNAME_SIZE];
  26. };
  27. struct iwpm_sa_data {
  28. struct sockaddr_storage loc_addr;
  29. struct sockaddr_storage mapped_loc_addr;
  30. struct sockaddr_storage rem_addr;
  31. struct sockaddr_storage mapped_rem_addr;
  32. u32 flags;
  33. };
  34. int iwpm_init(u8);
  35. int iwpm_exit(u8);
  36. int iwpm_valid_pid(void);
  37. int iwpm_register_pid(struct iwpm_dev_data *pm_msg, u8 nl_client);
  38. int iwpm_add_mapping(struct iwpm_sa_data *pm_msg, u8 nl_client);
  39. int iwpm_add_and_query_mapping(struct iwpm_sa_data *pm_msg, u8 nl_client);
  40. int iwpm_remove_mapping(struct sockaddr_storage *local_addr, u8 nl_client);
  41. int iwpm_register_pid_cb(struct sk_buff *, struct netlink_callback *);
  42. int iwpm_add_mapping_cb(struct sk_buff *, struct netlink_callback *);
  43. int iwpm_add_and_query_mapping_cb(struct sk_buff *, struct netlink_callback *);
  44. int iwpm_remote_info_cb(struct sk_buff *, struct netlink_callback *);
  45. int iwpm_mapping_error_cb(struct sk_buff *, struct netlink_callback *);
  46. int iwpm_mapping_info_cb(struct sk_buff *, struct netlink_callback *);
  47. int iwpm_ack_mapping_info_cb(struct sk_buff *, struct netlink_callback *);
  48. int iwpm_get_remote_info(struct sockaddr_storage *mapped_loc_addr,
  49. struct sockaddr_storage *mapped_rem_addr,
  50. struct sockaddr_storage *remote_addr, u8 nl_client);
  51. int iwpm_create_mapinfo(struct sockaddr_storage *local_addr,
  52. struct sockaddr_storage *mapped_addr, u8 nl_client,
  53. u32 map_flags);
  54. int iwpm_remove_mapinfo(struct sockaddr_storage *local_addr,
  55. struct sockaddr_storage *mapped_addr);
  56. int iwpm_hello_cb(struct sk_buff *skb, struct netlink_callback *cb);
  57. #endif /* _IW_PORTMAP_H */