[NETLINK]: Use nlmsg_trim() where appropriate
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
a36ca73337
Коммит
dc5fc579b9
|
@ -548,7 +548,7 @@ static inline void *nlmsg_get_pos(struct sk_buff *skb)
|
||||||
*
|
*
|
||||||
* Trims the message to the provided mark. Returns -1.
|
* Trims the message to the provided mark. Returns -1.
|
||||||
*/
|
*/
|
||||||
static inline int nlmsg_trim(struct sk_buff *skb, void *mark)
|
static inline int nlmsg_trim(struct sk_buff *skb, const void *mark)
|
||||||
{
|
{
|
||||||
if (mark)
|
if (mark)
|
||||||
skb_trim(skb, (unsigned char *) mark - skb->data);
|
skb_trim(skb, (unsigned char *) mark - skb->data);
|
||||||
|
|
|
@ -1957,7 +1957,7 @@ static inline int rtnetlink_fill_iwinfo(struct sk_buff * skb,
|
||||||
|
|
||||||
nlmsg_failure:
|
nlmsg_failure:
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -77,6 +77,7 @@
|
||||||
#include <linux/rcupdate.h>
|
#include <linux/rcupdate.h>
|
||||||
#include <linux/times.h>
|
#include <linux/times.h>
|
||||||
#include <asm/errno.h>
|
#include <asm/errno.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
#include <net/neighbour.h>
|
#include <net/neighbour.h>
|
||||||
#include <net/dst.h>
|
#include <net/dst.h>
|
||||||
#include <net/flow.h>
|
#include <net/flow.h>
|
||||||
|
@ -1514,7 +1515,7 @@ static int dn_rt_fill_info(struct sk_buff *skb, u32 pid, u32 seq,
|
||||||
|
|
||||||
nlmsg_failure:
|
nlmsg_failure:
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
#include <linux/route.h> /* RTF_xxx */
|
#include <linux/route.h> /* RTF_xxx */
|
||||||
#include <net/neighbour.h>
|
#include <net/neighbour.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
#include <net/dst.h>
|
#include <net/dst.h>
|
||||||
#include <net/flow.h>
|
#include <net/flow.h>
|
||||||
#include <net/fib_rules.h>
|
#include <net/fib_rules.h>
|
||||||
|
@ -349,7 +350,7 @@ static int dn_fib_dump_info(struct sk_buff *skb, u32 pid, u32 seq, int event,
|
||||||
|
|
||||||
nlmsg_failure:
|
nlmsg_failure:
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -EMSGSIZE;
|
return -EMSGSIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include <net/inet_hashtables.h>
|
#include <net/inet_hashtables.h>
|
||||||
#include <net/inet_timewait_sock.h>
|
#include <net/inet_timewait_sock.h>
|
||||||
#include <net/inet6_hashtables.h>
|
#include <net/inet6_hashtables.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
|
|
||||||
#include <linux/inet.h>
|
#include <linux/inet.h>
|
||||||
#include <linux/stddef.h>
|
#include <linux/stddef.h>
|
||||||
|
@ -152,7 +153,7 @@ static int inet_csk_diag_fill(struct sock *sk,
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
nlmsg_failure:
|
nlmsg_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -EMSGSIZE;
|
return -EMSGSIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -208,7 +209,7 @@ static int inet_twsk_diag_fill(struct inet_timewait_sock *tw,
|
||||||
nlh->nlmsg_len = skb_tail_pointer(skb) - previous_tail;
|
nlh->nlmsg_len = skb_tail_pointer(skb) - previous_tail;
|
||||||
return skb->len;
|
return skb->len;
|
||||||
nlmsg_failure:
|
nlmsg_failure:
|
||||||
skb_trim(skb, previous_tail - skb->data);
|
nlmsg_trim(skb, previous_tail);
|
||||||
return -EMSGSIZE;
|
return -EMSGSIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -579,7 +580,7 @@ static int inet_diag_fill_req(struct sk_buff *skb, struct sock *sk,
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
nlmsg_failure:
|
nlmsg_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -62,6 +62,7 @@
|
||||||
#include <linux/netfilter_ipv4.h>
|
#include <linux/netfilter_ipv4.h>
|
||||||
#include <net/ipip.h>
|
#include <net/ipip.h>
|
||||||
#include <net/checksum.h>
|
#include <net/checksum.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
|
|
||||||
#if defined(CONFIG_IP_PIMSM_V1) || defined(CONFIG_IP_PIMSM_V2)
|
#if defined(CONFIG_IP_PIMSM_V1) || defined(CONFIG_IP_PIMSM_V2)
|
||||||
#define CONFIG_IP_PIMSM 1
|
#define CONFIG_IP_PIMSM 1
|
||||||
|
@ -1570,7 +1571,7 @@ ipmr_fill_mroute(struct sk_buff *skb, struct mfc_cache *c, struct rtmsg *rtm)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -EMSGSIZE;
|
return -EMSGSIZE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#include <linux/notifier.h>
|
#include <linux/notifier.h>
|
||||||
|
|
||||||
#include <linux/netfilter.h>
|
#include <linux/netfilter.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
#include <net/netfilter/nf_conntrack.h>
|
#include <net/netfilter/nf_conntrack.h>
|
||||||
#include <net/netfilter/nf_conntrack_core.h>
|
#include <net/netfilter/nf_conntrack_core.h>
|
||||||
#include <net/netfilter/nf_conntrack_expect.h>
|
#include <net/netfilter/nf_conntrack_expect.h>
|
||||||
|
@ -306,7 +307,7 @@ ctnetlink_fill_info(struct sk_buff *skb, u32 pid, u32 seq,
|
||||||
|
|
||||||
nlmsg_failure:
|
nlmsg_failure:
|
||||||
nfattr_failure:
|
nfattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1169,7 +1170,7 @@ ctnetlink_exp_fill_info(struct sk_buff *skb, u32 pid, u32 seq,
|
||||||
|
|
||||||
nlmsg_failure:
|
nlmsg_failure:
|
||||||
nfattr_failure:
|
nfattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
#include <net/sch_generic.h>
|
#include <net/sch_generic.h>
|
||||||
#include <net/act_api.h>
|
#include <net/act_api.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
|
|
||||||
void tcf_hash_destroy(struct tcf_common *p, struct tcf_hashinfo *hinfo)
|
void tcf_hash_destroy(struct tcf_common *p, struct tcf_hashinfo *hinfo)
|
||||||
{
|
{
|
||||||
|
@ -98,7 +99,7 @@ static int tcf_dump_walker(struct sk_buff *skb, struct netlink_callback *cb,
|
||||||
err = tcf_action_dump_1(skb, a, 0, 0);
|
err = tcf_action_dump_1(skb, a, 0, 0);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
index--;
|
index--;
|
||||||
skb_trim(skb, (u8*)r - skb->data);
|
nlmsg_trim(skb, r);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
r->rta_len = skb_tail_pointer(skb) - (u8 *)r;
|
r->rta_len = skb_tail_pointer(skb) - (u8 *)r;
|
||||||
|
@ -114,7 +115,7 @@ done:
|
||||||
return n_i;
|
return n_i;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, (u8*)r - skb->data);
|
nlmsg_trim(skb, r);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,7 +145,7 @@ static int tcf_del_walker(struct sk_buff *skb, struct tc_action *a,
|
||||||
|
|
||||||
return n_i;
|
return n_i;
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, (u8*)r - skb->data);
|
nlmsg_trim(skb, r);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -440,7 +441,7 @@ tcf_action_dump_1(struct sk_buff *skb, struct tc_action *a, int bind, int ref)
|
||||||
}
|
}
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -467,7 +468,7 @@ tcf_action_dump(struct sk_buff *skb, struct tc_action *act, int bind, int ref)
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
err = -EINVAL;
|
err = -EINVAL;
|
||||||
errout:
|
errout:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -658,7 +659,7 @@ tca_get_fill(struct sk_buff *skb, struct tc_action *a, u32 pid, u32 seq,
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
nlmsg_failure:
|
nlmsg_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1059,7 +1060,7 @@ tc_dump_action(struct sk_buff *skb, struct netlink_callback *cb)
|
||||||
x->rta_len = skb_tail_pointer(skb) - (u8 *)x;
|
x->rta_len = skb_tail_pointer(skb) - (u8 *)x;
|
||||||
ret = skb->len;
|
ret = skb->len;
|
||||||
} else
|
} else
|
||||||
skb_trim(skb, (u8*)x - skb->data);
|
nlmsg_trim(skb, x);
|
||||||
|
|
||||||
nlh->nlmsg_len = skb_tail_pointer(skb) - b;
|
nlh->nlmsg_len = skb_tail_pointer(skb) - b;
|
||||||
if (NETLINK_CB(cb->skb).pid && ret)
|
if (NETLINK_CB(cb->skb).pid && ret)
|
||||||
|
@ -1070,7 +1071,7 @@ tc_dump_action(struct sk_buff *skb, struct netlink_callback *cb)
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
nlmsg_failure:
|
nlmsg_failure:
|
||||||
module_put(a_o->owner);
|
module_put(a_o->owner);
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return skb->len;
|
return skb->len;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/proc_fs.h>
|
#include <linux/proc_fs.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
#include <net/pkt_sched.h>
|
#include <net/pkt_sched.h>
|
||||||
#include <linux/tc_act/tc_gact.h>
|
#include <linux/tc_act/tc_gact.h>
|
||||||
|
@ -181,7 +182,7 @@ static int tcf_gact_dump(struct sk_buff *skb, struct tc_action *a, int bind, int
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/proc_fs.h>
|
#include <linux/proc_fs.h>
|
||||||
#include <linux/kmod.h>
|
#include <linux/kmod.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
#include <net/pkt_sched.h>
|
#include <net/pkt_sched.h>
|
||||||
#include <linux/tc_act/tc_ipt.h>
|
#include <linux/tc_act/tc_ipt.h>
|
||||||
|
@ -277,7 +278,7 @@ static int tcf_ipt_dump(struct sk_buff *skb, struct tc_action *a, int bind, int
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
kfree(t);
|
kfree(t);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/proc_fs.h>
|
#include <linux/proc_fs.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
#include <net/pkt_sched.h>
|
#include <net/pkt_sched.h>
|
||||||
#include <linux/tc_act/tc_mirred.h>
|
#include <linux/tc_act/tc_mirred.h>
|
||||||
|
@ -225,7 +226,7 @@ static int tcf_mirred_dump(struct sk_buff *skb, struct tc_action *a, int bind, i
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/proc_fs.h>
|
#include <linux/proc_fs.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
#include <net/pkt_sched.h>
|
#include <net/pkt_sched.h>
|
||||||
#include <linux/tc_act/tc_pedit.h>
|
#include <linux/tc_act/tc_pedit.h>
|
||||||
|
@ -226,7 +227,7 @@ static int tcf_pedit_dump(struct sk_buff *skb, struct tc_action *a,
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
kfree(opt);
|
kfree(opt);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
#include <net/act_api.h>
|
#include <net/act_api.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
|
|
||||||
#define L2T(p,L) ((p)->tcfp_R_tab->data[(L)>>(p)->tcfp_R_tab->rate.cell_log])
|
#define L2T(p,L) ((p)->tcfp_R_tab->data[(L)>>(p)->tcfp_R_tab->rate.cell_log])
|
||||||
#define L2T_P(p,L) ((p)->tcfp_P_tab->data[(L)>>(p)->tcfp_P_tab->rate.cell_log])
|
#define L2T_P(p,L) ((p)->tcfp_P_tab->data[(L)>>(p)->tcfp_P_tab->rate.cell_log])
|
||||||
|
@ -88,7 +89,7 @@ static int tcf_act_police_walker(struct sk_buff *skb, struct netlink_callback *c
|
||||||
err = tcf_action_dump_1(skb, a, 0, 0);
|
err = tcf_action_dump_1(skb, a, 0, 0);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
index--;
|
index--;
|
||||||
skb_trim(skb, (u8*)r - skb->data);
|
nlmsg_trim(skb, r);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
r->rta_len = skb_tail_pointer(skb) - (u8 *)r;
|
r->rta_len = skb_tail_pointer(skb) - (u8 *)r;
|
||||||
|
@ -102,7 +103,7 @@ done:
|
||||||
return n_i;
|
return n_i;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, (u8*)r - skb->data);
|
nlmsg_trim(skb, r);
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -355,7 +356,7 @@ tcf_act_police_dump(struct sk_buff *skb, struct tc_action *a, int bind, int ref)
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -598,7 +599,7 @@ int tcf_police_dump(struct sk_buff *skb, struct tcf_police *police)
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#include <linux/netdevice.h>
|
#include <linux/netdevice.h>
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
#include <linux/rtnetlink.h>
|
#include <linux/rtnetlink.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
#include <net/pkt_sched.h>
|
#include <net/pkt_sched.h>
|
||||||
|
|
||||||
#define TCA_ACT_SIMP 22
|
#define TCA_ACT_SIMP 22
|
||||||
|
@ -173,7 +174,7 @@ static inline int tcf_simp_dump(struct sk_buff *skb, struct tc_action *a,
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,8 @@
|
||||||
#include <linux/rtnetlink.h>
|
#include <linux/rtnetlink.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <linux/kmod.h>
|
#include <linux/kmod.h>
|
||||||
|
#include <linux/netlink.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
#include <net/pkt_sched.h>
|
#include <net/pkt_sched.h>
|
||||||
#include <net/pkt_cls.h>
|
#include <net/pkt_cls.h>
|
||||||
|
@ -345,7 +347,7 @@ tcf_fill_node(struct sk_buff *skb, struct tcf_proto *tp, unsigned long fh,
|
||||||
|
|
||||||
nlmsg_failure:
|
nlmsg_failure:
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#include <linux/errno.h>
|
#include <linux/errno.h>
|
||||||
#include <linux/rtnetlink.h>
|
#include <linux/rtnetlink.h>
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
#include <net/act_api.h>
|
#include <net/act_api.h>
|
||||||
#include <net/pkt_cls.h>
|
#include <net/pkt_cls.h>
|
||||||
|
|
||||||
|
@ -267,7 +268,7 @@ static int basic_dump(struct tcf_proto *tp, unsigned long fh,
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,7 @@
|
||||||
#include <linux/notifier.h>
|
#include <linux/notifier.h>
|
||||||
#include <linux/netfilter.h>
|
#include <linux/netfilter.h>
|
||||||
#include <net/ip.h>
|
#include <net/ip.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
#include <net/route.h>
|
#include <net/route.h>
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
|
@ -382,7 +383,7 @@ static int fw_dump(struct tcf_proto *tp, unsigned long fh,
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include <linux/etherdevice.h>
|
#include <linux/etherdevice.h>
|
||||||
#include <linux/notifier.h>
|
#include <linux/notifier.h>
|
||||||
#include <net/ip.h>
|
#include <net/ip.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
#include <net/route.h>
|
#include <net/route.h>
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
|
@ -599,7 +600,7 @@ static int route4_dump(struct tcf_proto *tp, unsigned long fh,
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#include <net/route.h>
|
#include <net/route.h>
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
#include <net/act_api.h>
|
#include <net/act_api.h>
|
||||||
#include <net/pkt_cls.h>
|
#include <net/pkt_cls.h>
|
||||||
|
|
||||||
|
|
|
@ -630,7 +630,7 @@ static int rsvp_dump(struct tcf_proto *tp, unsigned long fh,
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
#include <net/act_api.h>
|
#include <net/act_api.h>
|
||||||
#include <net/pkt_cls.h>
|
#include <net/pkt_cls.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
|
|
||||||
#define RSVP_DST_LEN 4
|
#define RSVP_DST_LEN 4
|
||||||
#define RSVP_ID "rsvp6"
|
#define RSVP_ID "rsvp6"
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
#include <linux/netdevice.h>
|
#include <linux/netdevice.h>
|
||||||
#include <net/ip.h>
|
#include <net/ip.h>
|
||||||
#include <net/act_api.h>
|
#include <net/act_api.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
#include <net/pkt_cls.h>
|
#include <net/pkt_cls.h>
|
||||||
#include <net/route.h>
|
#include <net/route.h>
|
||||||
|
|
||||||
|
@ -495,7 +496,7 @@ static int tcindex_dump(struct tcf_proto *tp, unsigned long fh,
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
#include <linux/notifier.h>
|
#include <linux/notifier.h>
|
||||||
#include <linux/rtnetlink.h>
|
#include <linux/rtnetlink.h>
|
||||||
#include <net/ip.h>
|
#include <net/ip.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
#include <net/route.h>
|
#include <net/route.h>
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
|
@ -772,7 +773,7 @@ static int u32_dump(struct tcf_proto *tp, unsigned long fh,
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
#include <linux/bitops.h>
|
#include <linux/bitops.h>
|
||||||
#include <linux/hrtimer.h>
|
#include <linux/hrtimer.h>
|
||||||
|
|
||||||
|
#include <net/netlink.h>
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
#include <net/pkt_sched.h>
|
#include <net/pkt_sched.h>
|
||||||
|
|
||||||
|
@ -852,7 +853,7 @@ static int tc_fill_qdisc(struct sk_buff *skb, struct Qdisc *q, u32 clid,
|
||||||
|
|
||||||
nlmsg_failure:
|
nlmsg_failure:
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1081,7 +1082,7 @@ static int tc_fill_tclass(struct sk_buff *skb, struct Qdisc *q,
|
||||||
|
|
||||||
nlmsg_failure:
|
nlmsg_failure:
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
#include <linux/netdevice.h>
|
#include <linux/netdevice.h>
|
||||||
#include <linux/rtnetlink.h>
|
#include <linux/rtnetlink.h>
|
||||||
#include <linux/file.h> /* for fput */
|
#include <linux/file.h> /* for fput */
|
||||||
|
#include <net/netlink.h>
|
||||||
#include <net/pkt_sched.h>
|
#include <net/pkt_sched.h>
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
|
|
||||||
|
@ -665,7 +666,7 @@ static int atm_tc_dump_class(struct Qdisc *sch, unsigned long cl,
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb,b-skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
static int
|
static int
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include <linux/etherdevice.h>
|
#include <linux/etherdevice.h>
|
||||||
#include <linux/notifier.h>
|
#include <linux/notifier.h>
|
||||||
#include <net/ip.h>
|
#include <net/ip.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
#include <net/route.h>
|
#include <net/route.h>
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
|
@ -1471,7 +1472,7 @@ static __inline__ int cbq_dump_rate(struct sk_buff *skb, struct cbq_class *cl)
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1496,7 +1497,7 @@ static __inline__ int cbq_dump_lss(struct sk_buff *skb, struct cbq_class *cl)
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1514,7 +1515,7 @@ static __inline__ int cbq_dump_wrr(struct sk_buff *skb, struct cbq_class *cl)
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1531,7 +1532,7 @@ static __inline__ int cbq_dump_ovl(struct sk_buff *skb, struct cbq_class *cl)
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1549,7 +1550,7 @@ static __inline__ int cbq_dump_fopt(struct sk_buff *skb, struct cbq_class *cl)
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1568,7 +1569,7 @@ static __inline__ int cbq_dump_police(struct sk_buff *skb, struct cbq_class *cl)
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -1601,7 +1602,7 @@ static int cbq_dump(struct Qdisc *sch, struct sk_buff *skb)
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1637,7 +1638,7 @@ cbq_dump_class(struct Qdisc *sch, unsigned long arg,
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -65,6 +65,7 @@
|
||||||
#include <linux/netdevice.h>
|
#include <linux/netdevice.h>
|
||||||
#include <linux/rtnetlink.h>
|
#include <linux/rtnetlink.h>
|
||||||
#include <linux/pkt_sched.h>
|
#include <linux/pkt_sched.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
#include <net/pkt_sched.h>
|
#include <net/pkt_sched.h>
|
||||||
#include <net/pkt_cls.h>
|
#include <net/pkt_cls.h>
|
||||||
#include <asm/system.h>
|
#include <asm/system.h>
|
||||||
|
@ -1378,7 +1379,7 @@ hfsc_dump_class(struct Qdisc *sch, unsigned long arg, struct sk_buff *skb,
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1584,7 +1585,7 @@ hfsc_dump_qdisc(struct Qdisc *sch, struct sk_buff *skb)
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -50,6 +50,7 @@
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
#include <linux/list.h>
|
#include <linux/list.h>
|
||||||
#include <linux/compiler.h>
|
#include <linux/compiler.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
#include <net/pkt_sched.h>
|
#include <net/pkt_sched.h>
|
||||||
#include <linux/rbtree.h>
|
#include <linux/rbtree.h>
|
||||||
|
@ -1128,7 +1129,7 @@ static int htb_dump(struct Qdisc *sch, struct sk_buff *skb)
|
||||||
return skb->len;
|
return skb->len;
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
spin_unlock_bh(&sch->dev->queue_lock);
|
spin_unlock_bh(&sch->dev->queue_lock);
|
||||||
skb_trim(skb, skb_tail_pointer(skb) - skb->data);
|
nlmsg_trim(skb, skb_tail_pointer(skb));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1164,7 +1165,7 @@ static int htb_dump_class(struct Qdisc *sch, unsigned long arg,
|
||||||
return skb->len;
|
return skb->len;
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
spin_unlock_bh(&sch->dev->queue_lock);
|
spin_unlock_bh(&sch->dev->queue_lock);
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
#include <linux/netfilter_ipv6.h>
|
#include <linux/netfilter_ipv6.h>
|
||||||
#include <linux/netfilter.h>
|
#include <linux/netfilter.h>
|
||||||
#include <linux/smp.h>
|
#include <linux/smp.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
#include <net/pkt_sched.h>
|
#include <net/pkt_sched.h>
|
||||||
#include <asm/byteorder.h>
|
#include <asm/byteorder.h>
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
|
@ -371,7 +372,7 @@ static int ingress_dump(struct Qdisc *sch, struct sk_buff *skb)
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
#include <linux/rtnetlink.h>
|
#include <linux/rtnetlink.h>
|
||||||
|
|
||||||
|
#include <net/netlink.h>
|
||||||
#include <net/pkt_sched.h>
|
#include <net/pkt_sched.h>
|
||||||
|
|
||||||
#define VERSION "1.2"
|
#define VERSION "1.2"
|
||||||
|
@ -616,7 +617,7 @@ static int netem_dump(struct Qdisc *sch, struct sk_buff *skb)
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
#include <net/ip.h>
|
#include <net/ip.h>
|
||||||
#include <net/route.h>
|
#include <net/route.h>
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
#include <net/pkt_sched.h>
|
#include <net/pkt_sched.h>
|
||||||
|
|
||||||
|
@ -280,7 +281,7 @@ static int prio_dump(struct Qdisc *sch, struct sk_buff *skb)
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#include <linux/notifier.h>
|
#include <linux/notifier.h>
|
||||||
#include <linux/init.h>
|
#include <linux/init.h>
|
||||||
#include <net/ip.h>
|
#include <net/ip.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
#include <linux/ipv6.h>
|
#include <linux/ipv6.h>
|
||||||
#include <net/route.h>
|
#include <net/route.h>
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
|
@ -476,7 +477,7 @@ static int sfq_dump(struct Qdisc *sch, struct sk_buff *skb)
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
#include <linux/etherdevice.h>
|
#include <linux/etherdevice.h>
|
||||||
#include <linux/notifier.h>
|
#include <linux/notifier.h>
|
||||||
#include <net/ip.h>
|
#include <net/ip.h>
|
||||||
|
#include <net/netlink.h>
|
||||||
#include <net/route.h>
|
#include <net/route.h>
|
||||||
#include <linux/skbuff.h>
|
#include <linux/skbuff.h>
|
||||||
#include <net/sock.h>
|
#include <net/sock.h>
|
||||||
|
@ -408,7 +409,7 @@ static int tbf_dump(struct Qdisc *sch, struct sk_buff *skb)
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -628,7 +628,7 @@ out:
|
||||||
|
|
||||||
nlmsg_failure:
|
nlmsg_failure:
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1182,7 +1182,7 @@ out:
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
nlmsg_failure:
|
nlmsg_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1367,7 +1367,7 @@ static int build_aevent(struct sk_buff *skb, struct xfrm_state *x, struct km_eve
|
||||||
|
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
nlmsg_failure:
|
nlmsg_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1767,7 +1767,7 @@ static int build_migrate(struct sk_buff *skb, struct xfrm_migrate *m,
|
||||||
nlh->nlmsg_len = skb_tail_pointer(skb) - b;
|
nlh->nlmsg_len = skb_tail_pointer(skb) - b;
|
||||||
return skb->len;
|
return skb->len;
|
||||||
nlmsg_failure:
|
nlmsg_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1956,7 +1956,7 @@ static int build_expire(struct sk_buff *skb, struct xfrm_state *x, struct km_eve
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
nlmsg_failure:
|
nlmsg_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2157,7 +2157,7 @@ static int build_acquire(struct sk_buff *skb, struct xfrm_state *x,
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
nlmsg_failure:
|
nlmsg_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2268,7 +2268,7 @@ static int build_polexpire(struct sk_buff *skb, struct xfrm_policy *xp,
|
||||||
return skb->len;
|
return skb->len;
|
||||||
|
|
||||||
nlmsg_failure:
|
nlmsg_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2427,7 +2427,7 @@ static int build_report(struct sk_buff *skb, u8 proto,
|
||||||
|
|
||||||
nlmsg_failure:
|
nlmsg_failure:
|
||||||
rtattr_failure:
|
rtattr_failure:
|
||||||
skb_trim(skb, b - skb->data);
|
nlmsg_trim(skb, b);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче