Home
last modified time | relevance | path

Searched refs:daddr (Results 1 – 25 of 748) sorted by relevance

12345678910>>...30

/OK3568_Linux_fs/kernel/arch/mips/cavium-octeon/
H A Ddma-octeon.c32 phys_addr_t (*dma_to_phys)(struct device *dev, dma_addr_t daddr);
43 static phys_addr_t octeon_hole_dma_to_phys(dma_addr_t daddr) in octeon_hole_dma_to_phys() argument
45 if (daddr >= CVMX_PCIE_BAR1_RC_BASE) in octeon_hole_dma_to_phys()
46 return daddr + CVMX_PCIE_BAR1_PHYS_BASE - CVMX_PCIE_BAR1_RC_BASE; in octeon_hole_dma_to_phys()
48 return daddr; in octeon_hole_dma_to_phys()
58 static phys_addr_t octeon_gen1_dma_to_phys(struct device *dev, dma_addr_t daddr) in octeon_gen1_dma_to_phys() argument
60 daddr = octeon_hole_dma_to_phys(daddr); in octeon_gen1_dma_to_phys()
62 if (daddr >= 0x10000000ull && daddr < 0x20000000ull) in octeon_gen1_dma_to_phys()
63 daddr += 0x400000000ull; in octeon_gen1_dma_to_phys()
65 return daddr; in octeon_gen1_dma_to_phys()
[all …]
/OK3568_Linux_fs/kernel/net/xfrm/
H A Dxfrm_hash.h19 static inline unsigned int __xfrm4_daddr_saddr_hash(const xfrm_address_t *daddr, in __xfrm4_daddr_saddr_hash() argument
22 u32 sum = (__force u32)daddr->a4 + (__force u32)saddr->a4; in __xfrm4_daddr_saddr_hash()
26 static inline unsigned int __xfrm6_daddr_saddr_hash(const xfrm_address_t *daddr, in __xfrm6_daddr_saddr_hash() argument
29 return __xfrm6_addr_hash(daddr) ^ __xfrm6_addr_hash(saddr); in __xfrm6_daddr_saddr_hash()
44 static inline unsigned int __xfrm4_dpref_spref_hash(const xfrm_address_t *daddr, in __xfrm4_dpref_spref_hash() argument
49 return jhash_2words(ntohl(daddr->a4) & __bits2mask32(dbits), in __xfrm4_dpref_spref_hash()
75 static inline unsigned int __xfrm6_dpref_spref_hash(const xfrm_address_t *daddr, in __xfrm6_dpref_spref_hash() argument
80 return __xfrm6_pref_hash(daddr, dbits) ^ in __xfrm6_dpref_spref_hash()
84 static inline unsigned int __xfrm_dst_hash(const xfrm_address_t *daddr, in __xfrm_dst_hash() argument
92 h ^= __xfrm4_daddr_saddr_hash(daddr, saddr); in __xfrm_dst_hash()
[all …]
/OK3568_Linux_fs/kernel/net/core/
H A Dsecure_seq.c57 const __be32 *saddr, const __be32 *daddr) in secure_tcpv6_ts_off() argument
61 struct in6_addr daddr; in secure_tcpv6_ts_off() member
64 .daddr = *(struct in6_addr *)daddr, in secure_tcpv6_ts_off()
71 return siphash(&combined, offsetofend(typeof(combined), daddr), in secure_tcpv6_ts_off()
76 u32 secure_tcpv6_seq(const __be32 *saddr, const __be32 *daddr, in secure_tcpv6_seq() argument
81 struct in6_addr daddr; in secure_tcpv6_seq() member
86 .daddr = *(struct in6_addr *)daddr, in secure_tcpv6_seq()
99 u64 secure_ipv6_port_ephemeral(const __be32 *saddr, const __be32 *daddr, in secure_ipv6_port_ephemeral() argument
104 struct in6_addr daddr; in secure_ipv6_port_ephemeral() member
109 .daddr = *(struct in6_addr *)daddr, in secure_ipv6_port_ephemeral()
[all …]
/OK3568_Linux_fs/kernel/include/net/
H A Dip6_checksum.h35 const struct in6_addr *daddr,
42 &ipv6_hdr(skb)->daddr, in ip6_compute_pseudo()
50 return ~csum_unfold(csum_ipv6_magic(&iph->saddr, &iph->daddr, in ip6_gro_compute_pseudo()
56 const struct in6_addr *daddr, in tcp_v6_check() argument
59 return csum_ipv6_magic(saddr, daddr, len, IPPROTO_TCP, base); in tcp_v6_check()
64 const struct in6_addr *daddr) in __tcp_v6_send_check() argument
69 th->check = ~tcp_v6_check(skb->len, saddr, daddr, 0); in __tcp_v6_send_check()
73 th->check = tcp_v6_check(skb->len, saddr, daddr, in __tcp_v6_send_check()
85 th->check = ~tcp_v6_check(0, &ipv6h->saddr, &ipv6h->daddr, 0); in tcp_v6_gso_csum_prep()
90 const struct in6_addr *daddr, in udp_v6_check() argument
[all …]
H A Dinetpeer.h38 struct inetpeer_addr daddr; member
99 const struct inetpeer_addr *daddr,
106 struct inetpeer_addr daddr; in inet_getpeer_v4() local
108 daddr.a4.addr = v4daddr; in inet_getpeer_v4()
109 daddr.a4.vif = vif; in inet_getpeer_v4()
110 daddr.family = AF_INET; in inet_getpeer_v4()
111 return inet_getpeer(base, &daddr, create); in inet_getpeer_v4()
118 struct inetpeer_addr daddr; in inet_getpeer_v6() local
120 daddr.a6 = *v6daddr; in inet_getpeer_v6()
121 daddr.family = AF_INET6; in inet_getpeer_v6()
[all …]
H A Dsecure_seq.h7 u64 secure_ipv4_port_ephemeral(__be32 saddr, __be32 daddr, __be16 dport);
8 u64 secure_ipv6_port_ephemeral(const __be32 *saddr, const __be32 *daddr,
10 u32 secure_tcp_seq(__be32 saddr, __be32 daddr,
12 u32 secure_tcp_ts_off(const struct net *net, __be32 saddr, __be32 daddr);
13 u32 secure_tcpv6_seq(const __be32 *saddr, const __be32 *daddr,
16 const __be32 *saddr, const __be32 *daddr);
17 u64 secure_dccp_sequence_number(__be32 saddr, __be32 daddr,
19 u64 secure_dccpv6_sequence_number(__be32 *saddr, __be32 *daddr,
H A Dinet6_hashtables.h47 const struct in6_addr *daddr,
56 const struct in6_addr *daddr,
65 const struct in6_addr *daddr, in __inet6_lookup() argument
71 sport, daddr, hnum, in __inet6_lookup()
78 daddr, hnum, dif, sdif); in __inet6_lookup()
95 &ipv6_hdr(skb)->daddr, ntohs(dport), in __inet6_lookup_skb()
102 const struct in6_addr *daddr, const __be16 dport,
109 const struct in6_addr *daddr, in inet6_match() argument
117 !ipv6_addr_equal(&sk->sk_v6_rcv_saddr, daddr)) in inet6_match()
/OK3568_Linux_fs/kernel/net/ipv6/
H A Drpl.c14 const struct in6_addr *daddr, in ipv6_rpl_addr_decompress() argument
17 memcpy(dst, daddr, pfx); in ipv6_rpl_addr_decompress()
40 const struct in6_addr *daddr, unsigned char n) in ipv6_rpl_srh_decompress() argument
53 ipv6_rpl_addr_decompress(&outhdr->rpl_segaddr[i], daddr, in ipv6_rpl_srh_decompress()
57 ipv6_rpl_addr_decompress(&outhdr->rpl_segaddr[n], daddr, in ipv6_rpl_srh_decompress()
63 const struct in6_addr *daddr, in ipv6_rpl_srh_calc_cmpri() argument
69 for (plen = 0; plen < sizeof(*daddr); plen++) { in ipv6_rpl_srh_calc_cmpri()
71 if (daddr->s6_addr[plen] != in ipv6_rpl_srh_calc_cmpri()
80 static unsigned char ipv6_rpl_srh_calc_cmpre(const struct in6_addr *daddr, in ipv6_rpl_srh_calc_cmpre() argument
85 for (plen = 0; plen < sizeof(*daddr); plen++) { in ipv6_rpl_srh_calc_cmpre()
[all …]
H A Dinet6_hashtables.c55 const struct in6_addr *daddr, in __inet6_lookup_established() argument
65 unsigned int hash = inet6_ehashfn(net, daddr, hnum, saddr, sport); in __inet6_lookup_established()
74 if (!inet6_match(net, sk, saddr, daddr, ports, dif, sdif)) in __inet6_lookup_established()
79 if (unlikely(!inet6_match(net, sk, saddr, daddr, ports, dif, sdif))) { in __inet6_lookup_established()
96 const struct in6_addr *daddr, in compute_score() argument
103 if (!ipv6_addr_equal(&sk->sk_v6_rcv_saddr, daddr)) in compute_score()
120 const struct in6_addr *daddr, in lookup_reuseport() argument
127 phash = inet6_ehashfn(net, daddr, hnum, saddr, sport); in lookup_reuseport()
138 const __be16 sport, const struct in6_addr *daddr, in inet6_lhash2_lookup() argument
147 score = compute_score(sk, net, hnum, daddr, dif, sdif); in inet6_lhash2_lookup()
[all …]
H A Dip6_checksum.c9 const struct in6_addr *daddr, in csum_ipv6_magic() argument
34 sum += (__force u32)daddr->s6_addr32[0]; in csum_ipv6_magic()
35 carry = (sum < (__force u32)daddr->s6_addr32[0]); in csum_ipv6_magic()
38 sum += (__force u32)daddr->s6_addr32[1]; in csum_ipv6_magic()
39 carry = (sum < (__force u32)daddr->s6_addr32[1]); in csum_ipv6_magic()
42 sum += (__force u32)daddr->s6_addr32[2]; in csum_ipv6_magic()
43 carry = (sum < (__force u32)daddr->s6_addr32[2]); in csum_ipv6_magic()
46 sum += (__force u32)daddr->s6_addr32[3]; in csum_ipv6_magic()
47 carry = (sum < (__force u32)daddr->s6_addr32[3]); in csum_ipv6_magic()
117 const struct in6_addr *daddr, int len) in udp6_set_csum() argument
[all …]
H A Dudp.c103 const struct in6_addr *daddr, unsigned short hnum, in compute_score() argument
115 if (!ipv6_addr_equal(&sk->sk_v6_rcv_saddr, daddr)) in compute_score()
149 const struct in6_addr *daddr, in lookup_reuseport() argument
156 hash = udp6_ehashfn(net, daddr, hnum, saddr, sport); in lookup_reuseport()
166 const struct in6_addr *daddr, unsigned int hnum, in udp6_lib_lookup2() argument
177 daddr, hnum, dif, sdif); in udp6_lib_lookup2()
180 saddr, sport, daddr, hnum); in udp6_lib_lookup2()
197 const struct in6_addr *daddr, in udp6_lookup_run_bpf() argument
207 saddr, sport, daddr, hnum, &sk); in udp6_lookup_run_bpf()
211 reuse_sk = lookup_reuseport(net, sk, skb, saddr, sport, daddr, hnum); in udp6_lookup_run_bpf()
[all …]
H A Dsyncookies.c41 const struct in6_addr *daddr, in cookie_hash() argument
46 struct in6_addr daddr; in cookie_hash() member
52 .daddr = *daddr, in cookie_hash()
64 const struct in6_addr *daddr, in secure_tcp_syn_cookie() argument
69 return (cookie_hash(saddr, daddr, sport, dport, 0, 0) + in secure_tcp_syn_cookie()
71 ((cookie_hash(saddr, daddr, sport, dport, count, 1) + data) in secure_tcp_syn_cookie()
76 const struct in6_addr *daddr, __be16 sport, in check_tcp_syn_cookie() argument
81 cookie -= cookie_hash(saddr, daddr, sport, dport, 0, 0) + sseq; in check_tcp_syn_cookie()
88 cookie_hash(saddr, daddr, sport, dport, count - diff, 1)) in check_tcp_syn_cookie()
104 return secure_tcp_syn_cookie(&iph->saddr, &iph->daddr, th->source, in __cookie_v6_init_sequence()
[all …]
/OK3568_Linux_fs/kernel/drivers/edac/
H A Dpnd2_edac.c93 struct dram_addr *daddr, char *msg);
927 struct dram_addr *daddr, char *msg) in apl_pmi2mem() argument
984 daddr->col = column; in apl_pmi2mem()
985 daddr->bank = bank; in apl_pmi2mem()
986 daddr->row = row; in apl_pmi2mem()
987 daddr->rank = rank; in apl_pmi2mem()
988 daddr->dimm = 0; in apl_pmi2mem()
997 struct dram_addr *daddr, char *msg) in dnv_pmi2mem() argument
1000 daddr->rank = dnv_get_bit(pmiaddr, dmap[pmiidx].rs0 + 13, 0); in dnv_pmi2mem()
1002 daddr->rank |= dnv_get_bit(pmiaddr, dmap[pmiidx].rs1 + 13, 1); in dnv_pmi2mem()
[all …]
/OK3568_Linux_fs/kernel/samples/bpf/
H A Dtc_l2_redirect_kern.c48 static __always_inline bool is_vip_addr(__be16 eth_proto, __be32 daddr) in is_vip_addr() argument
51 return (_htonl(0xffffff00) & daddr) == _htonl(0x0a0a0100); in is_vip_addr()
53 return (daddr == _htonl(0x2401face)); in is_vip_addr()
87 _htonl(iph->daddr)); in _l2_to_iptun_ingress_forward()
101 _htonl(ip6h->daddr.s6_addr32[0]), in _l2_to_iptun_ingress_forward()
102 _htonl(ip6h->daddr.s6_addr32[3])); in _l2_to_iptun_ingress_forward()
130 __be32 daddr = iph->daddr; in _l2_to_iptun_ingress_redirect() local
135 if (!is_vip_addr(eth->h_proto, daddr)) in _l2_to_iptun_ingress_redirect()
138 bpf_trace_printk(fmt4, sizeof(fmt4), _htonl(daddr), *ifindex); in _l2_to_iptun_ingress_redirect()
173 if (!is_vip_addr(eth->h_proto, iph->daddr)) in _l2_to_ip6tun_ingress_redirect()
[all …]
/OK3568_Linux_fs/kernel/tools/testing/selftests/net/
H A Dpsock_lib.h77 struct sockaddr_in saddr, daddr; in pair_udp_open() local
91 memset(&daddr, 0, sizeof(daddr)); in pair_udp_open()
92 daddr.sin_family = AF_INET; in pair_udp_open()
93 daddr.sin_port = htons(port + 1); in pair_udp_open()
94 daddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); in pair_udp_open()
97 if (bind(fds[1], (void *) &daddr, sizeof(daddr))) { in pair_udp_open()
105 if (connect(fds[0], (void *) &daddr, sizeof(daddr))) { in pair_udp_open()
/OK3568_Linux_fs/kernel/net/netfilter/
H A Dnft_chain_route.c22 __be32 saddr, daddr; in nf_route_table_hook4() local
34 daddr = iph->daddr; in nf_route_table_hook4()
42 iph->daddr != daddr || in nf_route_table_hook4()
69 struct in6_addr saddr, daddr; in nf_route_table_hook6() local
81 memcpy(&daddr, &ipv6_hdr(skb)->daddr, sizeof(daddr)); in nf_route_table_hook6()
91 memcmp(&ipv6_hdr(skb)->daddr, &daddr, sizeof(daddr)) || in nf_route_table_hook6()
/OK3568_Linux_fs/kernel/include/trace/events/
H A Dtcp.h15 #define TP_STORE_V4MAPPED(__entry, saddr, daddr) \ argument
22 ipv6_addr_set_v4mapped(daddr, pin6); \
26 #define TP_STORE_ADDRS(__entry, saddr, daddr, saddr6, daddr6) \ argument
36 TP_STORE_V4MAPPED(__entry, saddr, daddr); \
40 #define TP_STORE_ADDRS(__entry, saddr, daddr, saddr6, daddr6) \ argument
41 TP_STORE_V4MAPPED(__entry, saddr, daddr)
63 __array(__u8, daddr, 4)
82 p32 = (__be32 *) __entry->daddr;
90 __entry->sport, __entry->dport, __entry->saddr, __entry->daddr,
129 __array(__u8, daddr, 4)
[all …]
/OK3568_Linux_fs/kernel/net/phonet/
H A Dpn_dev.c174 u8 phonet_address_get(struct net_device *dev, u8 daddr) in phonet_address_get() argument
185 if (test_bit(daddr >> 2, pnd->addrs)) in phonet_address_get()
186 saddr = daddr; in phonet_address_get()
200 saddr = phonet_address_get(def_dev, daddr); in phonet_address_get()
357 int phonet_route_add(struct net_device *dev, u8 daddr) in phonet_route_add() argument
363 daddr = daddr >> 2; in phonet_route_add()
365 if (routes->table[daddr] == NULL) { in phonet_route_add()
366 rcu_assign_pointer(routes->table[daddr], dev); in phonet_route_add()
374 int phonet_route_del(struct net_device *dev, u8 daddr) in phonet_route_del() argument
379 daddr = daddr >> 2; in phonet_route_del()
[all …]
/OK3568_Linux_fs/kernel/net/ieee802154/6lowpan/
H A Dtx.c14 struct ieee802154_addr daddr; member
34 unsigned short type, const void *daddr, in lowpan_header_create() argument
43 if (!daddr) in lowpan_header_create()
54 info->daddr.pan_id = info->saddr.pan_id; in lowpan_header_create()
56 if (!memcmp(daddr, ldev->broadcast, EUI64_ADDR_LEN)) { in lowpan_header_create()
57 info->daddr.short_addr = cpu_to_le16(IEEE802154_ADDR_BROADCAST); in lowpan_header_create()
58 info->daddr.mode = IEEE802154_ADDR_SHORT; in lowpan_header_create()
62 n = neigh_lookup(&nd_tbl, &hdr->daddr, ldev); in lowpan_header_create()
72 info->daddr.short_addr = short_addr; in lowpan_header_create()
73 info->daddr.mode = IEEE802154_ADDR_SHORT; in lowpan_header_create()
[all …]
/OK3568_Linux_fs/kernel/arch/s390/include/asm/
H A Dchecksum.h78 static inline __wsum csum_tcpudp_nofold(__be32 saddr, __be32 daddr, __u32 len, in csum_tcpudp_nofold() argument
84 csum += (__force __u32)daddr; in csum_tcpudp_nofold()
95 static inline __sum16 csum_tcpudp_magic(__be32 saddr, __be32 daddr, __u32 len, in csum_tcpudp_magic() argument
98 return csum_fold(csum_tcpudp_nofold(saddr, daddr, len, proto, sum)); in csum_tcpudp_magic()
111 const struct in6_addr *daddr, in csum_ipv6_magic() argument
120 sum += (__force __u32)daddr->s6_addr32[0]; in csum_ipv6_magic()
121 sum += (__force __u32)daddr->s6_addr32[1]; in csum_ipv6_magic()
122 sum += (__force __u32)daddr->s6_addr32[2]; in csum_ipv6_magic()
123 sum += (__force __u32)daddr->s6_addr32[3]; in csum_ipv6_magic()
/OK3568_Linux_fs/kernel/drivers/infiniband/sw/rxe/
H A Drxe_net.c47 struct in_addr *daddr) in rxe_find_route4() argument
55 memcpy(&fl.daddr, daddr, sizeof(*daddr)); in rxe_find_route4()
60 pr_err_ratelimited("no route to %pI4\n", &daddr->s_addr); in rxe_find_route4()
70 struct in6_addr *daddr) in rxe_find_route6() argument
78 memcpy(&fl6.daddr, daddr, sizeof(*daddr)); in rxe_find_route6()
85 pr_err_ratelimited("no route to %pI6\n", daddr); in rxe_find_route6()
90 pr_err("no route to %pI6\n", daddr); in rxe_find_route6()
104 struct in6_addr *daddr) in rxe_find_route6() argument
126 struct in_addr *daddr; in rxe_find_route() local
129 daddr = &av->dgid_addr._sockaddr_in.sin_addr; in rxe_find_route()
[all …]
/OK3568_Linux_fs/kernel/net/llc/
H A Dllc_c_ac.c208 llc->daddr.lsap, LLC_PDU_CMD); in llc_conn_ac_send_disc_cmd_p_set_x()
210 rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); in llc_conn_ac_send_disc_cmd_p_set_x()
235 llc->daddr.lsap, LLC_PDU_RSP); in llc_conn_ac_send_dm_rsp_f_set_p()
237 rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); in llc_conn_ac_send_dm_rsp_f_set_p()
259 llc->daddr.lsap, LLC_PDU_RSP); in llc_conn_ac_send_dm_rsp_f_set_1()
261 rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); in llc_conn_ac_send_dm_rsp_f_set_1()
292 llc->daddr.lsap, LLC_PDU_RSP); in llc_conn_ac_send_frmr_rsp_f_set_x()
295 rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); in llc_conn_ac_send_frmr_rsp_f_set_x()
319 llc->daddr.lsap, LLC_PDU_RSP); in llc_conn_ac_resend_frmr_rsp_f_set_0()
322 rc = llc_mac_hdr_init(nskb, llc->dev->dev_addr, llc->daddr.mac); in llc_conn_ac_resend_frmr_rsp_f_set_0()
[all …]
/OK3568_Linux_fs/kernel/arch/arm/include/asm/
H A Dchecksum.h99 csum_tcpudp_nofold(__be32 saddr, __be32 daddr, __u32 len, in csum_tcpudp_nofold() argument
113 : "r" (daddr), "r" (saddr), "r" (lenprot) in csum_tcpudp_nofold()
126 : "r" (sum), "r" (daddr), "r" (saddr), "r" (lenprot) in csum_tcpudp_nofold()
136 csum_tcpudp_magic(__be32 saddr, __be32 daddr, __u32 len, in csum_tcpudp_magic() argument
139 return csum_fold(csum_tcpudp_nofold(saddr, daddr, len, proto, sum)); in csum_tcpudp_magic()
155 __csum_ipv6_magic(const struct in6_addr *saddr, const struct in6_addr *daddr, __be32 len,
159 csum_ipv6_magic(const struct in6_addr *saddr, const struct in6_addr *daddr, in csum_ipv6_magic() argument
162 return csum_fold(__csum_ipv6_magic(saddr, daddr, htonl(len), in csum_ipv6_magic()
/OK3568_Linux_fs/kernel/tools/testing/selftests/bpf/progs/
H A Dconnect6_prog.c40 tuple.ipv6.daddr[0] = bpf_htonl(DST_REWRITE_IP6_0); in connect_v6_prog()
41 tuple.ipv6.daddr[1] = bpf_htonl(DST_REWRITE_IP6_1); in connect_v6_prog()
42 tuple.ipv6.daddr[2] = bpf_htonl(DST_REWRITE_IP6_2); in connect_v6_prog()
43 tuple.ipv6.daddr[3] = bpf_htonl(DST_REWRITE_IP6_3); in connect_v6_prog()
59 if (sk->src_ip6[0] != tuple.ipv6.daddr[0] || in connect_v6_prog()
60 sk->src_ip6[1] != tuple.ipv6.daddr[1] || in connect_v6_prog()
61 sk->src_ip6[2] != tuple.ipv6.daddr[2] || in connect_v6_prog()
62 sk->src_ip6[3] != tuple.ipv6.daddr[3] || in connect_v6_prog()
/OK3568_Linux_fs/kernel/net/ipv4/
H A Droute.c157 const void *daddr);
158 static void ipv4_confirm_neigh(const struct dst_entry *dst, const void *daddr);
435 const void *daddr) in ipv4_neigh_lookup() argument
450 pkey = skb ? ip_hdr(skb)->daddr : *((__be32 *) daddr); in ipv4_neigh_lookup()
462 static void ipv4_confirm_neigh(const struct dst_entry *dst, const void *daddr) in ipv4_confirm_neigh() argument
466 const __be32 *pkey = daddr; in ipv4_confirm_neigh()
472 } else if (!daddr || in ipv4_confirm_neigh()
523 hash = siphash_3u32((__force u32)iph->daddr, in __ip_select_ident()
558 iph->daddr, iph->saddr, 0, 0, in __build_flow_key()
579 __be32 daddr = inet->inet_daddr; in build_sk_flow_key() local
[all …]

12345678910>>...30