@@ -18,14 +18,6 @@
static int pm_nl_pernet_id;
-struct mptcp_pm_add_entry {
- struct list_head list;
- struct mptcp_addr_info addr;
- u8 retrans_times;
- struct timer_list add_timer;
- struct mptcp_sock *sock;
-};
-
struct pm_nl_pernet {
/* protects pernet updates */
spinlock_t lock;
@@ -247,11 +239,11 @@ bool mptcp_pm_nl_check_work_pending(struct mptcp_sock *msk)
return true;
}
-struct mptcp_pm_add_entry *
+struct mptcp_pm_addr_entry *
mptcp_lookup_anno_list_by_saddr(const struct mptcp_sock *msk,
const struct mptcp_addr_info *addr)
{
- struct mptcp_pm_add_entry *entry;
+ struct mptcp_pm_addr_entry *entry;
lockdep_assert_held(&msk->pm.lock);
@@ -265,7 +257,7 @@ mptcp_lookup_anno_list_by_saddr(const struct mptcp_sock *msk,
bool mptcp_pm_sport_in_anno_list(struct mptcp_sock *msk, const struct sock *sk)
{
- struct mptcp_pm_add_entry *entry;
+ struct mptcp_pm_addr_entry *entry;
struct mptcp_addr_info saddr;
bool ret = false;
@@ -286,7 +278,7 @@ bool mptcp_pm_sport_in_anno_list(struct mptcp_sock *msk, const struct sock *sk)
static void mptcp_pm_add_timer(struct timer_list *timer)
{
- struct mptcp_pm_add_entry *entry = from_timer(entry, timer, add_timer);
+ struct mptcp_pm_addr_entry *entry = from_timer(entry, timer, add_timer);
struct mptcp_sock *msk = entry->sock;
struct sock *sk = (struct sock *)msk;
@@ -328,11 +320,11 @@ static void mptcp_pm_add_timer(struct timer_list *timer)
__sock_put(sk);
}
-struct mptcp_pm_add_entry *
+struct mptcp_pm_addr_entry *
mptcp_pm_del_add_timer(struct mptcp_sock *msk,
const struct mptcp_addr_info *addr, bool check_id)
{
- struct mptcp_pm_add_entry *entry;
+ struct mptcp_pm_addr_entry *entry;
struct sock *sk = (struct sock *)msk;
struct timer_list *add_timer = NULL;
@@ -356,7 +348,7 @@ mptcp_pm_del_add_timer(struct mptcp_sock *msk,
bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk,
const struct mptcp_addr_info *addr)
{
- struct mptcp_pm_add_entry *add_entry = NULL;
+ struct mptcp_pm_addr_entry *add_entry = NULL;
struct sock *sk = (struct sock *)msk;
struct net *net = sock_net(sk);
@@ -392,7 +384,7 @@ bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk,
void mptcp_pm_free_anno_list(struct mptcp_sock *msk)
{
- struct mptcp_pm_add_entry *entry, *tmp;
+ struct mptcp_pm_addr_entry *entry, *tmp;
struct sock *sk = (struct sock *)msk;
LIST_HEAD(free_list);
@@ -1439,7 +1431,7 @@ int mptcp_pm_nl_add_addr_doit(struct sk_buff *skb, struct genl_info *info)
static bool remove_anno_list_by_saddr(struct mptcp_sock *msk,
const struct mptcp_addr_info *addr)
{
- struct mptcp_pm_add_entry *entry;
+ struct mptcp_pm_addr_entry *entry;
entry = mptcp_pm_del_add_timer(msk, addr, false);
if (entry) {
@@ -243,9 +243,19 @@ struct mptcp_pm_data {
struct mptcp_pm_addr_entry {
struct list_head list;
struct mptcp_addr_info addr;
- u8 flags;
- int ifindex;
- struct socket *lsk;
+ union {
+ struct {
+ u8 flags;
+ int ifindex;
+ struct socket *lsk;
+ };
+ /* mptcp_pm_add_entry */
+ struct {
+ u8 retrans_times;
+ struct timer_list add_timer;
+ struct mptcp_sock *sock;
+ };
+ };
};
struct mptcp_data_frag {
@@ -1026,10 +1036,10 @@ bool mptcp_pm_alloc_anno_list(struct mptcp_sock *msk,
const struct mptcp_addr_info *addr);
void mptcp_pm_free_anno_list(struct mptcp_sock *msk);
bool mptcp_pm_sport_in_anno_list(struct mptcp_sock *msk, const struct sock *sk);
-struct mptcp_pm_add_entry *
+struct mptcp_pm_addr_entry *
mptcp_pm_del_add_timer(struct mptcp_sock *msk,
const struct mptcp_addr_info *addr, bool check_id);
-struct mptcp_pm_add_entry *
+struct mptcp_pm_addr_entry *
mptcp_lookup_anno_list_by_saddr(const struct mptcp_sock *msk,
const struct mptcp_addr_info *addr);
int mptcp_userspace_pm_set_flags(struct mptcp_pm_addr_entry *loc,