Home
last modified time | relevance | path

Searched full:ct (Results 1 – 25 of 622) sorted by relevance

12345678910>>...25

/openbmc/linux/tools/testing/selftests/tc-testing/tc-tests/actions/
H A Dct.json4 "name": "Add simple ct action",
7 "ct"
11 "$TC actions flush action ct",
17 "cmdUnderTest": "$TC actions add action ct index 42",
19 "verifyCmd": "$TC actions list action ct",
20 "matchPattern": "action order [0-9]*: ct zone 0 pipe.*index 42 ref",
23 "$TC actions flush action ct"
28 "name": "Add simple ct action with cookie",
31 "ct"
35 "$TC actions flush action ct",
[all …]
/openbmc/linux/drivers/gpu/drm/i915/gt/uc/
H A Dintel_guc_ct.c29 #define CT_DEAD(ct, reason) \ argument
31 if (!(ct)->dead_ct_reported) { \
32 (ct)->dead_ct_reason |= 1 << CT_DEAD_##reason; \
33 queue_work(system_unbound_wq, &(ct)->dead_ct_worker); \
37 #define CT_DEAD(ct, reason) do { } while (0) argument
40 static inline struct intel_guc *ct_to_guc(struct intel_guc_ct *ct) in ct_to_guc() argument
42 return container_of(ct, struct intel_guc, ct); in ct_to_guc()
46 guc_err(ct_to_guc(_ct), "CT: " _fmt, ##__VA_ARGS__)
49 guc_dbg(ct_to_guc(_ct), "CT: " _fmt, ##__VA_ARGS__)
54 guc_probe_error(ct_to_guc(ct), "CT: " _fmt, ##__VA_ARGS__)
[all …]
/openbmc/linux/tools/testing/selftests/bpf/progs/
H A Dtest_bpf_nf_fail.c32 struct nf_conn *ct; in alloc_release() local
34 ct = bpf_skb_ct_alloc(ctx, &tup, sizeof(tup.ipv4), &opts, sizeof(opts)); in alloc_release()
35 if (!ct) in alloc_release()
37 bpf_ct_release(ct); in alloc_release()
46 struct nf_conn *ct; in insert_insert() local
48 ct = bpf_skb_ct_alloc(ctx, &tup, sizeof(tup.ipv4), &opts, sizeof(opts)); in insert_insert()
49 if (!ct) in insert_insert()
51 ct = bpf_ct_insert_entry(ct); in insert_insert()
52 if (!ct) in insert_insert()
54 ct = bpf_ct_insert_entry(ct); in insert_insert()
[all …]
H A Dtest_bpf_nf.c77 struct nf_conn *ct; in nf_ct_test() local
81 ct = lookup_fn(ctx, NULL, 0, &opts_def, sizeof(opts_def)); in nf_ct_test()
82 if (ct) in nf_ct_test()
83 bpf_ct_release(ct); in nf_ct_test()
88 ct = lookup_fn(ctx, &bpf_tuple, sizeof(bpf_tuple.ipv4), &opts_def, in nf_ct_test()
92 if (ct) in nf_ct_test()
93 bpf_ct_release(ct); in nf_ct_test()
98 ct = lookup_fn(ctx, &bpf_tuple, sizeof(bpf_tuple.ipv4), &opts_def, in nf_ct_test()
101 if (ct) in nf_ct_test()
102 bpf_ct_release(ct); in nf_ct_test()
[all …]
/openbmc/linux/drivers/scsi/bfa/
H A Dbfi_reg.h18 #define HOSTFN0_INT_STATUS 0x00014000 /* cb/ct */
19 #define HOSTFN1_INT_STATUS 0x00014100 /* cb/ct */
20 #define HOSTFN2_INT_STATUS 0x00014300 /* ct */
21 #define HOSTFN3_INT_STATUS 0x00014400 /* ct */
22 #define HOSTFN0_INT_MSK 0x00014004 /* cb/ct */
23 #define HOSTFN1_INT_MSK 0x00014104 /* cb/ct */
24 #define HOSTFN2_INT_MSK 0x00014304 /* ct */
25 #define HOSTFN3_INT_MSK 0x00014404 /* ct */
27 #define HOST_PAGE_NUM_FN0 0x00014008 /* cb/ct */
28 #define HOST_PAGE_NUM_FN1 0x00014108 /* cb/ct */
[all …]
/openbmc/linux/drivers/net/ethernet/brocade/bna/
H A Dbfi_reg.h19 #define HOSTFN0_INT_STATUS 0x00014000 /* cb/ct */
20 #define HOSTFN1_INT_STATUS 0x00014100 /* cb/ct */
21 #define HOSTFN2_INT_STATUS 0x00014300 /* ct */
22 #define HOSTFN3_INT_STATUS 0x00014400 /* ct */
23 #define HOSTFN0_INT_MSK 0x00014004 /* cb/ct */
24 #define HOSTFN1_INT_MSK 0x00014104 /* cb/ct */
25 #define HOSTFN2_INT_MSK 0x00014304 /* ct */
26 #define HOSTFN3_INT_MSK 0x00014404 /* ct */
28 #define HOST_PAGE_NUM_FN0 0x00014008 /* cb/ct */
29 #define HOST_PAGE_NUM_FN1 0x00014108 /* cb/ct */
[all …]
/openbmc/linux/net/netfilter/
H A Dnf_conntrack_h323_main.c65 struct nf_conn *ct, enum ip_conntrack_info ctinfo, in get_tpkt_data() argument
68 struct nf_ct_h323_master *info = nfct_help_data(ct); in get_tpkt_data()
171 static int get_h245_addr(struct nf_conn *ct, const unsigned char *data, in get_h245_addr() argument
183 if (nf_ct_l3num(ct) != AF_INET) in get_h245_addr()
189 if (nf_ct_l3num(ct) != AF_INET6) in get_h245_addr()
205 static int expect_rtp_rtcp(struct sk_buff *skb, struct nf_conn *ct, in expect_rtp_rtcp() argument
221 if (!get_h245_addr(ct, *data, taddr, &addr, &port) || in expect_rtp_rtcp()
222 memcmp(&addr, &ct->tuplehash[dir].tuple.src.u3, sizeof(addr)) || in expect_rtp_rtcp()
231 if ((rtp_exp = nf_ct_expect_alloc(ct)) == NULL) in expect_rtp_rtcp()
233 nf_ct_expect_init(rtp_exp, NF_CT_EXPECT_CLASS_DEFAULT, nf_ct_l3num(ct), in expect_rtp_rtcp()
[all …]
H A Dnf_conntrack_core.c487 u32 nf_ct_get_id(const struct nf_conn *ct) in nf_ct_get_id() argument
494 a = (unsigned long)ct; in nf_ct_get_id()
495 b = (unsigned long)ct->master; in nf_ct_get_id()
496 c = (unsigned long)nf_ct_net(ct); in nf_ct_get_id()
497 d = (unsigned long)siphash(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple, in nf_ct_get_id()
498 sizeof(ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple), in nf_ct_get_id()
509 clean_from_lists(struct nf_conn *ct) in clean_from_lists() argument
511 hlist_nulls_del_rcu(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode); in clean_from_lists()
512 hlist_nulls_del_rcu(&ct->tuplehash[IP_CT_DIR_REPLY].hnnode); in clean_from_lists()
515 nf_ct_remove_expectations(ct); in clean_from_lists()
[all …]
H A Dnf_nat_sip.c41 struct nf_conn *ct = nf_ct_get(skb, &ctinfo); in mangle_packet() local
45 if (nf_ct_protonum(ct) == IPPROTO_TCP) { in mangle_packet()
50 if (!__nf_nat_mangle_tcp_packet(skb, ct, ctinfo, in mangle_packet()
58 if (!nf_nat_mangle_udp_packet(skb, ct, ctinfo, in mangle_packet()
70 static int sip_sprintf_addr(const struct nf_conn *ct, char *buffer, in sip_sprintf_addr() argument
73 if (nf_ct_l3num(ct) == NFPROTO_IPV4) in sip_sprintf_addr()
83 static int sip_sprintf_addr_port(const struct nf_conn *ct, char *buffer, in sip_sprintf_addr_port() argument
86 if (nf_ct_l3num(ct) == NFPROTO_IPV4) in sip_sprintf_addr_port()
99 struct nf_conn *ct = nf_ct_get(skb, &ctinfo); in map_addr() local
101 struct nf_ct_sip_master *ct_sip_info = nfct_help_data(ct); in map_addr()
[all …]
H A Dxt_CT.c20 static inline int xt_ct_target(struct sk_buff *skb, struct nf_conn *ct) in xt_ct_target() argument
26 if (ct) { in xt_ct_target()
27 refcount_inc(&ct->ct_general.use); in xt_ct_target()
28 nf_ct_set(skb, ct, IP_CT_NEW); in xt_ct_target()
30 nf_ct_set(skb, ct, IP_CT_UNTRACKED); in xt_ct_target()
40 struct nf_conn *ct = info->ct; in xt_ct_target_v0() local
42 return xt_ct_target(skb, ct); in xt_ct_target_v0()
49 struct nf_conn *ct = info->ct; in xt_ct_target_v1() local
51 return xt_ct_target(skb, ct); in xt_ct_target_v1()
73 xt_ct_set_helper(struct nf_conn *ct, const char *helper_name, in xt_ct_set_helper() argument
[all …]
H A Dnf_conntrack_proto_tcp.c266 static void tcp_print_conntrack(struct seq_file *s, struct nf_conn *ct) in tcp_print_conntrack() argument
268 if (test_bit(IPS_OFFLOAD_BIT, &ct->status)) in tcp_print_conntrack()
271 seq_printf(s, "%s ", tcp_conntrack_names[ct->proto.tcp.state]); in tcp_print_conntrack()
485 const struct nf_conn *ct, in nf_tcp_log_invalid() argument
491 const struct nf_tcp_net *tn = nf_tcp_pernet(nf_ct_net(ct)); in nf_tcp_log_invalid()
503 nf_ct_l4proto_log_invalid(skb, ct, state, "%pV", &vaf); in nf_tcp_log_invalid()
510 tcp_in_window(struct nf_conn *ct, enum ip_conntrack_dir dir, in tcp_in_window() argument
515 struct ip_ct_tcp *state = &ct->proto.tcp; in tcp_in_window()
536 receiver_offset = nf_ct_seq_offset(ct, !dir, ack - 1); in tcp_in_window()
643 return nf_tcp_log_invalid(skb, ct, hook_state, sender, NFCT_TCP_IGNORE, in tcp_in_window()
[all …]
H A Dnf_conntrack_netlink.c166 static int ctnetlink_dump_status(struct sk_buff *skb, const struct nf_conn *ct) in ctnetlink_dump_status() argument
168 if (nla_put_be32(skb, CTA_STATUS, htonl(ct->status))) in ctnetlink_dump_status()
176 static int ctnetlink_dump_timeout(struct sk_buff *skb, const struct nf_conn *ct, in ctnetlink_dump_timeout() argument
181 if (nf_ct_is_confirmed(ct)) in ctnetlink_dump_timeout()
182 timeout = nf_ct_expires(ct) / HZ; in ctnetlink_dump_timeout()
184 timeout = ct->timeout / HZ; in ctnetlink_dump_timeout()
197 static int ctnetlink_dump_protoinfo(struct sk_buff *skb, struct nf_conn *ct, in ctnetlink_dump_protoinfo() argument
204 l4proto = nf_ct_l4proto_find(nf_ct_protonum(ct)); in ctnetlink_dump_protoinfo()
212 ret = l4proto->to_nlattr(skb, nest_proto, ct, destroy); in ctnetlink_dump_protoinfo()
223 const struct nf_conn *ct) in ctnetlink_dump_helpinfo() argument
[all …]
H A Dnf_conntrack_proto_sctp.c139 static void sctp_print_conntrack(struct seq_file *s, struct nf_conn *ct) in sctp_print_conntrack() argument
141 seq_printf(s, "%s ", sctp_conntrack_names[ct->proto.sctp.state]); in sctp_print_conntrack()
153 static int do_basic_checks(struct nf_conn *ct, in do_basic_checks() argument
180 nf_ct_l4proto_log_invalid(skb, ct, state, in do_basic_checks()
245 sctp_new(struct nf_conn *ct, const struct sk_buff *skb, in sctp_new() argument
253 memset(&ct->proto.sctp, 0, sizeof(ct->proto.sctp)); in sctp_new()
281 ct->proto.sctp.vtag[IP_CT_DIR_REPLY] = ih->init_tag; in sctp_new()
285 ct->proto.sctp.vtag[IP_CT_DIR_ORIGINAL] = sh->vtag; in sctp_new()
291 ct->proto.sctp.vtag[IP_CT_DIR_REPLY] = sh->vtag; in sctp_new()
294 ct->proto.sctp.state = SCTP_CONNTRACK_NONE; in sctp_new()
[all …]
H A Dnf_nat_core.c59 const struct nf_conn *ct, in nf_nat_ipv4_decode_session() argument
64 const struct nf_conntrack_tuple *t = &ct->tuplehash[dir].tuple; in nf_nat_ipv4_decode_session()
67 if (ct->status & statusbit) { in nf_nat_ipv4_decode_session()
79 if (ct->status & statusbit) { in nf_nat_ipv4_decode_session()
91 const struct nf_conn *ct, in nf_nat_ipv6_decode_session() argument
97 const struct nf_conntrack_tuple *t = &ct->tuplehash[dir].tuple; in nf_nat_ipv6_decode_session()
100 if (ct->status & statusbit) { in nf_nat_ipv6_decode_session()
112 if (ct->status & statusbit) { in nf_nat_ipv6_decode_session()
126 const struct nf_conn *ct; in __nf_nat_decode_session() local
132 ct = nf_ct_get(skb, &ctinfo); in __nf_nat_decode_session()
[all …]
H A Dnf_conntrack_sip.c66 static int string_len(const struct nf_conn *ct, const char *dptr, in string_len() argument
78 static int digits_len(const struct nf_conn *ct, const char *dptr, in digits_len() argument
110 static int callid_len(const struct nf_conn *ct, const char *dptr, in callid_len() argument
129 static int media_len(const struct nf_conn *ct, const char *dptr, in media_len() argument
132 int len = string_len(ct, dptr, limit, shift); in media_len()
140 return len + digits_len(ct, dptr, limit, shift); in media_len()
143 static int sip_parse_addr(const struct nf_conn *ct, const char *cp, in sip_parse_addr() argument
150 if (!ct) in sip_parse_addr()
154 switch (nf_ct_l3num(ct)) { in sip_parse_addr()
185 static int epaddr_len(const struct nf_conn *ct, const char *dptr, in epaddr_len() argument
[all …]
H A Dnf_conntrack_ecache.c67 struct nf_conn *ct = nf_ct_tuplehash_to_ctrack(h); in ecache_work_evict_list() local
69 /* The worker owns all entries, ct remains valid until nf_ct_put in ecache_work_evict_list()
72 if (nf_conntrack_event(IPCT_DESTROY, ct)) { in ecache_work_evict_list()
77 hlist_nulls_del_rcu(&ct->tuplehash[IP_CT_DIR_ORIGINAL].hnnode); in ecache_work_evict_list()
78 hlist_nulls_add_head(&ct->tuplehash[IP_CT_DIR_REPLY].hnnode, &evicted_list); in ecache_work_evict_list()
95 struct nf_conn *ct = nf_ct_tuplehash_to_ctrack(h); in ecache_work_evict_list() local
97 hlist_nulls_del_rcu(&ct->tuplehash[IP_CT_DIR_REPLY].hnnode); in ecache_work_evict_list()
98 nf_ct_put(ct); in ecache_work_evict_list()
132 struct net *net = nf_ct_net(item->ct); in __nf_conntrack_eventmask_report()
142 notify = rcu_dereference(net->ct.nf_conntrack_event_cb); in __nf_conntrack_eventmask_report()
[all …]
H A Dnft_ct.c57 const struct nf_conn *ct; in nft_ct_get_eval() local
63 ct = nf_ct_get(pkt->skb, &ctinfo); in nft_ct_get_eval()
67 if (ct) in nft_ct_get_eval()
79 if (ct == NULL) in nft_ct_get_eval()
87 *dest = ct->status; in nft_ct_get_eval()
91 *dest = READ_ONCE(ct->mark); in nft_ct_get_eval()
96 *dest = ct->secmark; in nft_ct_get_eval()
100 *dest = jiffies_to_msecs(nf_ct_expires(ct)); in nft_ct_get_eval()
103 if (ct->master == NULL) in nft_ct_get_eval()
105 help = nfct_help(ct->master); in nft_ct_get_eval()
[all …]
H A Dxt_conntrack.c40 conntrack_mt_origsrc(const struct nf_conn *ct, in conntrack_mt_origsrc() argument
44 return conntrack_addrcmp(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.u3, in conntrack_mt_origsrc()
49 conntrack_mt_origdst(const struct nf_conn *ct, in conntrack_mt_origdst() argument
53 return conntrack_addrcmp(&ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.u3, in conntrack_mt_origdst()
58 conntrack_mt_replsrc(const struct nf_conn *ct, in conntrack_mt_replsrc() argument
62 return conntrack_addrcmp(&ct->tuplehash[IP_CT_DIR_REPLY].tuple.src.u3, in conntrack_mt_replsrc()
67 conntrack_mt_repldst(const struct nf_conn *ct, in conntrack_mt_repldst() argument
71 return conntrack_addrcmp(&ct->tuplehash[IP_CT_DIR_REPLY].tuple.dst.u3, in conntrack_mt_repldst()
77 const struct nf_conn *ct) in ct_proto_port_check() argument
81 tuple = &ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple; in ct_proto_port_check()
[all …]
/openbmc/linux/drivers/video/fbdev/aty/
H A Dmach64_ct.c4 * ATI Mach64 CT/VT/GT/LT Support
46 * ATI Mach64 CT clock synthesis description.
103 * PLL programming (Mach64 CT family)
254 if ((err = aty_valid_pll_ct(info, vclk_per, &pll->ct))) in aty_var_to_pll_ct()
256 if (M64_HAS(GTB_DSP) && (err = aty_dsp_gt(info, bpp, &pll->ct))) in aty_var_to_pll_ct()
258 /*aty_calc_pll_ct(info, &pll->ct);*/ in aty_var_to_pll_ct()
266 …ret = par->ref_clk_per * pll->ct.pll_ref_div * pll->ct.vclk_post_div_real / pll->ct.vclk_fb_div / … in aty_pll_to_var_ct()
268 if(pll->ct.xres > 0) { in aty_pll_to_var_ct()
270 ret /= pll->ct.xres; in aty_pll_to_var_ct()
293 pll->ct.pll_ext_cntl, pll->ct.pll_gen_cntl, pll->ct.pll_vclk_cntl); in aty_set_pll_ct()
[all …]
/openbmc/linux/drivers/macintosh/
H A Dwindfarm.h28 int (*set_value)(struct wf_control *ct, s32 val);
29 int (*get_value)(struct wf_control *ct, s32 *val);
30 s32 (*get_min)(struct wf_control *ct);
31 s32 (*get_max)(struct wf_control *ct);
32 void (*release)(struct wf_control *ct);
56 extern int wf_register_control(struct wf_control *ct);
57 extern void wf_unregister_control(struct wf_control *ct);
58 extern int wf_get_control(struct wf_control *ct);
59 extern void wf_put_control(struct wf_control *ct);
61 static inline int wf_control_set_max(struct wf_control *ct) in wf_control_set_max() argument
[all …]
/openbmc/linux/net/netfilter/ipvs/
H A Dip_vs_nfct.c74 struct nf_conn *ct = nf_ct_get(skb, &ctinfo); in ip_vs_update_conntrack() local
77 if (ct == NULL || nf_ct_is_confirmed(ct) || in ip_vs_update_conntrack()
78 nf_ct_is_dying(ct)) in ip_vs_update_conntrack()
94 if (cp->app && nf_ct_protonum(ct) == IPPROTO_TCP && in ip_vs_update_conntrack()
95 !nfct_seqadj(ct) && !nfct_seqadj_ext_add(ct)) in ip_vs_update_conntrack()
104 new_tuple = ct->tuplehash[IP_CT_DIR_REPLY].tuple; in ip_vs_update_conntrack()
119 IP_VS_DBG_BUF(7, "%s: Updating conntrack ct=%p, status=0x%lX, " in ip_vs_update_conntrack()
121 __func__, ct, ct->status, ctinfo, in ip_vs_update_conntrack()
122 ARG_TUPLE(&ct->tuplehash[IP_CT_DIR_REPLY].tuple)); in ip_vs_update_conntrack()
123 IP_VS_DBG_BUF(7, "%s: Updating conntrack ct=%p, status=0x%lX, " in ip_vs_update_conntrack()
[all …]
/openbmc/linux/include/net/netfilter/
H A Dnf_conntrack.h89 /* jiffies32 when this ct is considered dead */
141 static inline u_int16_t nf_ct_l3num(const struct nf_conn *ct) in nf_ct_l3num() argument
143 return ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.src.l3num; in nf_ct_l3num()
146 static inline u_int8_t nf_ct_protonum(const struct nf_conn *ct) in nf_ct_protonum() argument
148 return ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.protonum; in nf_ct_protonum()
151 #define nf_ct_tuple(ct, dir) (&(ct)->tuplehash[dir].tuple) argument
158 static inline struct net *nf_ct_net(const struct nf_conn *ct) in nf_ct_net() argument
160 return read_pnet(&ct->ct_net); in nf_ct_net()
164 void nf_conntrack_alter_reply(struct nf_conn *ct,
184 void nf_conntrack_tcp_set_closing(struct nf_conn *ct);
[all …]
H A Dnf_conntrack_ecache.h23 u16 ctmask; /* bitmask of ct events to be delivered */
30 nf_ct_ecache_find(const struct nf_conn *ct) in nf_ct_ecache_find() argument
33 return nf_ct_ext_find(ct, NF_CT_EXT_ECACHE); in nf_ct_ecache_find()
39 static inline bool nf_ct_ecache_exist(const struct nf_conn *ct) in nf_ct_ecache_exist() argument
42 return nf_ct_ext_exist(ct, NF_CT_EXT_ECACHE); in nf_ct_ecache_exist()
52 struct nf_conn *ct; member
72 void nf_ct_deliver_cached_events(struct nf_conn *ct);
73 int nf_conntrack_eventmask_report(unsigned int eventmask, struct nf_conn *ct,
76 bool nf_ct_ecache_ext_add(struct nf_conn *ct, u16 ctmask, u16 expmask, gfp_t gfp);
79 static inline void nf_ct_deliver_cached_events(const struct nf_conn *ct) in nf_ct_deliver_cached_events() argument
[all …]
H A Dnf_conntrack_l4proto.h31 bool (*can_early_drop)(const struct nf_conn *ct);
35 struct nf_conn *ct, bool destroy);
38 int (*from_nlattr)(struct nlattr *tb[], struct nf_conn *ct);
95 int nf_conntrack_icmp_packet(struct nf_conn *ct,
100 int nf_conntrack_icmpv6_packet(struct nf_conn *ct,
105 int nf_conntrack_udp_packet(struct nf_conn *ct,
110 int nf_conntrack_udplite_packet(struct nf_conn *ct,
115 int nf_conntrack_tcp_packet(struct nf_conn *ct,
120 int nf_conntrack_dccp_packet(struct nf_conn *ct,
125 int nf_conntrack_sctp_packet(struct nf_conn *ct,
[all …]
/openbmc/linux/net/openvswitch/
H A Dconntrack.c64 struct nf_conn *ct; member
154 static u32 ovs_ct_get_mark(const struct nf_conn *ct) in ovs_ct_get_mark() argument
157 return ct ? READ_ONCE(ct->mark) : 0; in ovs_ct_get_mark()
168 static void ovs_ct_get_labels(const struct nf_conn *ct, in ovs_ct_get_labels() argument
173 if (ct) { in ovs_ct_get_labels()
174 if (ct->master && !nf_ct_is_confirmed(ct)) in ovs_ct_get_labels()
175 ct = ct->master; in ovs_ct_get_labels()
176 cl = nf_ct_labels_find(ct); in ovs_ct_get_labels()
190 key->ct.orig_tp.src = htons(orig->dst.u.icmp.type); in __ovs_ct_update_key_orig_tp()
191 key->ct.orig_tp.dst = htons(orig->dst.u.icmp.code); in __ovs_ct_update_key_orig_tp()
[all …]

12345678910>>...25