HomeSort by: relevance | last modified time | path
    Searched refs:inp (Results 1 - 25 of 99) sorted by relevancy

1 2 3 4

  /src/sbin/fsck_lfs/
pass3.c 42 struct inoinfo **inpp, *inp; local in function:pass3
47 inp = *inpp;
48 if (inp->i_number == ULFS_ROOTINO || inp->i_number == LFS_IFILE_INUM ||
49 !(inp->i_parent == 0 || statemap[inp->i_number] == DSTATE))
51 if (statemap[inp->i_number] == DCLEAR)
53 if (statemap[inp->i_number] == FCLEAR)
56 orphan = inp->i_number;
57 if (inp->i_parent == 0 |
    [all...]
pass2.c 66 struct inoinfo **inpp, *inp; local in function:pass2
136 inp = *inpp;
137 if (inp->i_isize == 0)
139 if (inp->i_isize < MINDIRSIZE(fs)) {
140 direrror(inp->i_number, "DIRECTORY TOO SHORT");
141 inp->i_isize = roundup(MINDIRSIZE(fs), LFS_DIRBLKSIZ);
143 vp = vget(fs, inp->i_number);
145 lfs_dino_setsize(fs, dp, inp->i_isize);
148 } else if ((inp->i_isize & (LFS_DIRBLKSIZ - 1)) != 0) {
149 getpathname(pathbuf, sizeof(pathbuf), inp->i_number
217 struct inoinfo *inp; local in function:pass2check
    [all...]
  /src/sbin/fsck_ext2fs/
pass3.c 75 struct inoinfo **inpp, *inp; local in function:pass3
80 inp = *inpp;
81 if (inp->i_number == EXT2_ROOTINO ||
82 !(inp->i_parent == 0 || statemap[inp->i_number] == DSTATE))
84 if (statemap[inp->i_number] == DCLEAR)
87 orphan = inp->i_number;
88 if (inp->i_parent == 0 ||
89 statemap[inp->i_parent] != DSTATE ||
92 inp = getinoinfo(inp->i_parent)
    [all...]
pass2.c 91 struct inoinfo **inpp, *inp; local in function:pass2
154 inp = *inpp;
155 if (inp->i_isize == 0)
157 if (inp->i_isize < MINDIRSIZE) {
158 direrror(inp->i_number, "DIRECTORY TOO SHORT");
159 inp->i_isize = roundup(MINDIRSIZE, sblock.e2fs_bsize);
161 dp = ginode(inp->i_number);
162 inossize(dp, inp->i_isize);
165 } else if ((inp->i_isize & (sblock.e2fs_bsize - 1)) != 0) {
166 getpathname(pathbuf, sizeof(pathbuf), inp->i_number
226 struct inoinfo *inp; local in function:pass2check
    [all...]
  /src/sys/netinet/
in_pcb.c 203 struct inpcb *inp; local in function:inpcb_create
210 inp = pool_cache_get(in4pcb_pool_cache, PR_NOWAIT);
212 inp = pool_cache_get(in6pcb_pool_cache, PR_NOWAIT);
215 inp = pool_cache_get(in4pcb_pool_cache, PR_NOWAIT);
217 if (inp == NULL)
220 memset(inp, 0, sizeof(struct in4pcb));
223 memset(inp, 0, sizeof(struct in6pcb));
225 inp->inp_af = soaf(so);
226 inp->inp_table = table;
227 inp->inp_socket = so
480 struct inpcb *inp = v; local in function:inpcb_bind
525 struct inpcb *inp = v; local in function:inpcb_connect
662 struct inpcb *inp = v; local in function:inpcb_disconnect
684 struct inpcb *inp = v; local in function:inpcb_destroy
774 struct inpcb *inp; local in function:inpcb_notify
802 struct inpcb *inp; local in function:inpcb_notifyall
850 struct inpcb *inp; local in function:inpcb_purgeif0
875 struct inpcb *inp; local in function:inpcb_purgeif
958 struct inpcb *inp; local in function:inpcb_lookup_local
1072 struct inpcb *inp; local in function:inpcb_lookup
1122 struct inpcb *inp; local in function:inpcb_lookup_bound
    [all...]
sctp_usrreq.c 236 sctp_notify_mbuf(struct sctp_inpcb *inp,
248 if ((inp == NULL) || (stcb == NULL) || (net == NULL) ||
284 sctp_timer_stop(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, NULL);
337 sctp_timer_start(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, NULL);
343 sctp_notify(struct sctp_inpcb *inp,
351 if ((inp == NULL) || (stcb == NULL) || (net == NULL) ||
400 sctp_free_assoc(inp, stcb);
405 if (inp->sctp_socket) {
406 inp->sctp_socket->so_error = errno;
407 sctp_sowwakeup(inp, inp->sctp_socket)
433 struct sctp_inpcb *inp; local in function:sctp_ctlinput
496 struct sctp_inpcb *inp; local in function:sctp_abort
509 struct sctp_inpcb *inp; local in function:sctp_attach
554 struct sctp_inpcb *inp; local in function:sctp_bind
577 struct sctp_inpcb *inp; local in function:sctp_detach
604 struct sctp_inpcb *inp; local in function:sctp_send
691 struct sctp_inpcb *inp; local in function:sctp_disconnect
808 struct sctp_inpcb *inp; local in function:sctp_shutdown
1145 struct sctp_inpcb *inp; local in function:sctp_do_connect_x
1329 struct sctp_inpcb *inp; local in function:sctp_optsget
2382 struct sctp_inpcb *inp; local in function:sctp_optsset
3237 struct inpcb *inp; local in function:sctp_ctloutput
3302 struct sctp_inpcb *inp; local in function:sctp_connect
3431 struct sctp_inpcb *inp; local in function:sctp_rcvd
3572 struct sctp_inpcb *inp; local in function:sctp_listen
3627 struct sctp_inpcb *inp; local in function:sctp_accept
3706 struct sctp_inpcb *inp; local in function:sctp_sockaddr
3780 struct sctp_inpcb *inp; local in function:sctp_peeraddr
    [all...]
portalgo.c 154 pcb_getports(struct inpcb *inp, uint16_t *lastport,
157 struct inpcbtable * const table = inp->inp_table;
163 so = inp->inp_socket;
176 switch (inp->inp_af) {
180 if (inp->inp_flags & INP_LOWPORT) {
197 if (inp->inp_flags & IN6P_LOWPORT) {
240 check_suitable_port(uint16_t port, struct inpcb *inp, kauth_cred_t cred)
242 struct inpcbtable * const table = inp->inp_table;
254 switch (inp->inp_af) {
263 sin.sin_addr = in4p_laddr(inp);
    [all...]
sctp_peeloff.c 89 struct sctp_inpcb *inp; local in function:sctp_can_peel_off
91 inp = (struct sctp_inpcb *)head->so_pcb;
92 if (inp == NULL) {
95 stcb = sctp_findassociation_ep_asocid(inp, assoc_id);
106 struct sctp_inpcb *inp, *n_inp; local in function:sctp_do_peeloff
109 inp = (struct sctp_inpcb *)head->so_pcb;
110 if (inp == NULL)
112 stcb = sctp_findassociation_ep_asocid(inp, assoc_id);
120 (SCTP_PCB_COPY_FLAGS & inp->sctp_flags));
127 sctp_move_pcb_and_assoc(inp, n_inp, stcb)
141 struct sctp_inpcb *inp, *n_inp; local in function:sctp_get_peeloff
    [all...]
raw_ip.c 167 struct inpcb *inp; local in function:rip_input
184 TAILQ_FOREACH(inp, &rawcbtable.inpt_queue, inp_queue) {
185 if (inp->inp_af != AF_INET)
187 if (in4p_ip(inp).ip_p && in4p_ip(inp).ip_p != proto)
189 if (!in_nullhost(in4p_laddr(inp)) &&
190 !in_hosteq(in4p_laddr(inp), ip->ip_dst))
192 if (!in_nullhost(in4p_faddr(inp)) &&
193 !in_hosteq(in4p_faddr(inp), ip->ip_src))
208 last = inp;
241 struct inpcb *inp; local in function:rip_pcbnotify
405 struct inpcb *inp = sotoinpcb(so); local in function:rip_ctloutput
512 struct inpcb *inp; local in function:rip_attach
539 struct inpcb *inp; local in function:rip_detach
567 struct inpcb *inp = sotoinpcb(so); local in function:rip_bind
623 struct inpcb *inp = sotoinpcb(so); local in function:rip_connect
651 struct inpcb *inp = sotoinpcb(so); local in function:rip_disconnect
759 struct inpcb *inp = sotoinpcb(so); local in function:rip_send
    [all...]
sctp_pcb.c 127 SCTP_INP_RLOCK(struct sctp_inpcb *inp)
130 LIST_FOREACH(stcb, &inp->sctp_asoc_list, sctp_tcblist) {
134 if (mtx_owned(&(inp)->inp_mtx))
135 panic("INP Recursive Lock-R");
136 mtx_lock(&(inp)->inp_mtx);
140 SCTP_INP_WLOCK(struct sctp_inpcb *inp)
142 SCTP_INP_RLOCK(inp);
148 struct sctp_inpcb *inp; local in function:SCTP_INP_INFO_RLOCK
150 LIST_FOREACH(inp, &sctppcbinfo.listhead, sctp_list) {
151 if (mtx_owned(&(inp)->inp_mtx)
172 struct sctp_inpcb *inp; local in function:sctp_validate_no_locks
244 struct sctp_inpcb *inp; local in function:sctp_tcb_special_locate
485 struct sctp_inpcb *inp; local in function:sctp_findassociation_ep_addr
664 struct sctp_inpcb *inp; local in function:sctp_endpoint_probe
831 struct sctp_inpcb *inp; local in function:sctp_pcb_findep
929 struct sctp_inpcb *inp; local in function:sctp_findassociation_addr_sa
1133 struct sctp_inpcb *inp; local in function:sctp_findassociation_addr
1301 struct sctp_inpcb *inp; local in function:sctp_inpcb_alloc
1617 struct sctp_inpcb *inp, *inp_tmp; local in function:sctp_inpcb_bind
3347 struct sctp_inpcb *inp; local in function:sctp_destination_is_reachable
3641 struct sctp_inpcb *inp; local in function:sctp_del_local_addr_assoc
3688 struct sctp_inpcb *inp; local in function:sctp_del_local_addr_assoc_sa
3906 struct sctp_inpcb *inp, *l_inp; local in function:sctp_load_addresses_from_init
4611 struct sctp_inpcb *inp; local in function:sctp_drain
    [all...]
udp_usrreq.c 446 struct inpcb *inp; local in function:udp4_sendup
450 inp = sotoinpcb(so);
451 KASSERT(inp != NULL);
454 if (ipsec_used && ipsec_in_reject(m, inp)) {
463 if (inp->inp_flags & INP_CONTROLOPTS ||
466 ip_savecontrol(inp, &opts, ip, n);
489 struct inpcb *inp; local in function:udp4_realinput
528 TAILQ_FOREACH(inp, &udbtable.inpt_queue, inp_queue) {
529 if (inp->inp_af != AF_INET)
532 if (inp->inp_lport != *dport
694 struct inpcb *inp; local in function:udp_ctloutput
858 struct inpcb *inp; local in function:udp_attach
892 struct inpcb *inp; local in function:udp_detach
913 struct inpcb *inp = sotoinpcb(so); local in function:udp_bind
940 struct inpcb *inp = sotoinpcb(so); local in function:udp_connect
967 struct inpcb *inp = sotoinpcb(so); local in function:udp_disconnect
1075 struct inpcb *inp = sotoinpcb(so); local in function:udp_send
    [all...]
dccp_usrreq.c 190 struct inpcb *inp = NULL, *oinp = NULL; local in function:dccp_input
340 inp = in6pcb_lookup(&dccpbtable, &ip6->ip6_src,
342 if (inp == NULL) {
344 inp = in6pcb_lookup_bound(&dccpbtable, &ip6->ip6_dst,
350 inp = inpcb_lookup(&dccpbtable, ip->ip_src,
352 if (inp == NULL) {
354 inp = inpcb_lookup_bound(&dccpbtable, ip->ip_dst,
359 DCCP_DEBUG((LOG_INFO, "in6p=%p\n", inp));
361 DCCP_DEBUG((LOG_INFO, "inp=%p\n", inp));
935 struct inpcb *inp = NULL; local in function:dccp_ctlinput
1051 struct inpcb *inp; local in function:dccp_ctloutput
1111 struct inpcb *inp; local in function:dccp_output
1551 struct inpcb *inp = NULL; local in function:dccp_abort
1573 struct inpcb *inp = dp->d_inpcb; local in function:dccp_close
1603 struct inpcb *inp = NULL; local in function:dccp_attach
1654 struct inpcb *inp; local in function:dccp_bind
1689 struct inpcb *inp; local in function:dccp_connect
1768 struct inpcb *inp; local in function:dccp_doconnect
1814 struct inpcb *inp; local in function:dccp_detach
1837 struct inpcb *inp; local in function:dccp_disconnect
1910 struct inpcb *inp; local in function:dccp_send
1998 struct inpcb *inp; local in function:dccp_shutdown
2017 struct inpcb *inp; local in function:dccp_listen
2048 struct inpcb *inp = NULL; local in function:dccp_accept
2081 struct inpcb *inp; local in function:dccp_newdccpcb
2459 struct inpcb *inp, **inp_list; local in function:dccp_pcblist
    [all...]
tcp_usrreq.c 261 struct inpcb *inp; local in function:tcp_ctloutput
274 inp = sotoinpcb(so);
275 if (inp == NULL) {
293 tp = intotcpcb(inp);
448 struct inpcb *inp; local in function:tcp_attach
457 inp = sotoinpcb(so);
458 KASSERT(inp == NULL);
479 inp = sotoinpcb(so);
481 tp = tcp_newtcpcb(family, inp);
486 inpcb_destroy(inp);
504 struct inpcb *inp; local in function:tcp_detach
521 struct inpcb *inp; local in function:tcp_accept
556 struct inpcb *inp = NULL; local in function:tcp_bind
603 struct inpcb *inp; local in function:tcp_listen
644 struct inpcb *inp; local in function:tcp_connect
729 struct inpcb *inp; local in function:tcp_connect2
750 struct inpcb *inp; local in function:tcp_disconnect
785 struct inpcb *inp; local in function:tcp_shutdown
814 struct inpcb *inp; local in function:tcp_abort
865 struct inpcb *inp; local in function:tcp_peeraddr
895 struct inpcb *inp; local in function:tcp_sockaddr
925 struct inpcb *inp; local in function:tcp_rcvd
959 struct inpcb *inp; local in function:tcp_recvoob
1002 struct inpcb *inp; local in function:tcp_send
1039 struct inpcb *inp = NULL; local in function:tcp_sendoob
1419 struct inpcb *inp; local in function:inet4_ident_core
1454 struct inpcb *inp; local in function:inet6_ident_core
1614 const struct inpcb *inp; local in function:sysctl_inpcblist
    [all...]
  /src/sys/netinet6/
in6_pcb.c 141 * Bind address from sin6 to inp.
144 in6pcb_bind_addr(struct inpcb *inp, struct sockaddr_in6 *sin6, struct lwp *l)
166 if ((inp->inp_flags & IN6P_IPV6_V6ONLY) != 0) {
182 (inp->inp_flags & IN6P_BINDANY) == 0) {
193 if ((inp->inp_flags & IN6P_FAITH) == 0) {
196 (inp->inp_flags & IN6P_BINDANY) == 0) {
222 in6p_laddr(inp) = sin6->sin6_addr;
230 * Bind port from sin6 to inp.
233 in6pcb_bind_port(struct inpcb *inp, struct sockaddr_in6 *sin6, struct lwp *l)
235 struct inpcbtable *table = inp->inp_table
328 struct inpcb *inp = v; local in function:in6pcb_bind
388 struct inpcb *inp = v; local in function:in6pcb_connect
606 struct inpcb *inp; local in function:in6pcb_notify
750 struct inpcb *inp; local in function:in6pcb_purgeif0
801 struct inpcb *inp; local in function:in6pcb_purgeif
837 struct inpcb *inp, *match = NULL; local in function:in6pcb_lookup_local
1049 struct inpcb *inp; local in function:in6pcb_lookup
1093 struct inpcb *inp; local in function:in6pcb_lookup_bound
    [all...]
sctp6_usrreq.c 251 if ((in6p->ip_inp.inp.inp_flags & INP_CONTROLOPTS)
280 /* inp's ref-count reduced && stcb unlocked */
313 sctp6_notify_mbuf(struct sctp_inpcb *inp,
321 if ((inp == NULL) || (stcb == NULL) || (net == NULL) ||
342 sctp_timer_stop(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, NULL);
389 sctp_timer_start(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, NULL);
391 if (inp) {
392 /* reduce inp's ref-count */
393 SCTP_INP_WLOCK(inp);
394 SCTP_INP_DECR_REF(inp);
435 struct sctp_inpcb *inp; local in function:sctp6_ctlinput
506 struct sctp_inpcb *inp; local in function:sctp6_getcred
560 struct sctp_inpcb *inp; local in function:sctp6_abort
579 struct sctp_inpcb *inp; local in function:sctp6_attach
628 struct sctp_inpcb *inp; local in function:sctp6_bind
686 struct sctp_inpcb *inp; local in function:sctp6_detach
703 struct sctp_inpcb *inp; local in function:sctp6_disconnect
795 struct sctp_inpcb *inp; local in function:sctp6_send
918 struct sctp_inpcb *inp; local in function:sctp6_connect
1050 struct sctp_inpcb *inp; local in function:sctp6_getaddr
1129 struct sctp_inpcb *inp; local in function:sctp6_peeraddr
    [all...]
dccp6_usrreq.c 117 struct inpcb *inp; local in function:dccp6_bind
123 inp = sotoinpcb(so);
124 if (inp == 0) {
126 DCCP_DEBUG((LOG_INFO, "dccp6_bind: inp == 0!\n"));
135 INP_LOCK(inp);
137 intodccpcb(inp)->inp_vflag &= ~INP_IPV4;
138 intodccpcb(inp)->inp_vflag |= INP_IPV6;
140 error = in6pcb_bind(inp, sinp, td);
141 INP_UNLOCK(inp);
149 struct inpcb *inp; local in function:dccp6_connect
235 struct inpcb *inp; local in function:dccp6_listen
266 struct inpcb *inp = NULL; local in function:dccp6_accept
    [all...]
udp6_usrreq.c 178 udp6_notify(struct inpcb *inp, int errno)
180 inp->inp_socket->so_error = errno;
181 sorwakeup(inp->inp_socket);
182 sowwakeup(inp->inp_socket);
305 struct inpcb *inp; local in function:udp6_ctloutput
336 inp = sotoinpcb(so);
346 inp->inp_flags &= ~IN6P_ESPINUDP;
350 inp->inp_flags |= IN6P_ESPINUDP;
381 struct inpcb *inp; local in function:udp6_sendup
385 inp = sotoinpcb(so)
423 struct inpcb *inp; local in function:udp6_realinput
1066 struct inpcb *inp; local in function:udp6_attach
1098 struct inpcb *inp = sotoinpcb(so); local in function:udp6_detach
1120 struct inpcb *inp = sotoinpcb(so); local in function:udp6_bind
1145 struct inpcb *inp = sotoinpcb(so); local in function:udp6_connect
1174 struct inpcb *inp = sotoinpcb(so); local in function:udp6_disconnect
1288 struct inpcb *inp = sotoinpcb(so); local in function:udp6_send
    [all...]
raw_ip6.c 169 struct inpcb *inp; local in function:rip6_input
191 TAILQ_FOREACH(inp, &raw6cbtable.inpt_queue, inp_queue) {
192 if (inp->inp_af != AF_INET6)
194 if (in6p_ip6(inp).ip6_nxt &&
195 in6p_ip6(inp).ip6_nxt != proto)
197 if (!IN6_IS_ADDR_UNSPECIFIED(&in6p_laddr(inp)) &&
198 !IN6_ARE_ADDR_EQUAL(&in6p_laddr(inp), &ip6->ip6_dst))
200 if (!IN6_IS_ADDR_UNSPECIFIED(&in6p_faddr(inp)) &&
201 !IN6_ARE_ADDR_EQUAL(&in6p_faddr(inp), &ip6->ip6_src))
203 if (in6p_cksum(inp) != -1)
309 struct inpcb *inp; local in function:rip6_ctlinput
372 struct inpcb *inp; local in function:rip6_output
589 struct inpcb *inp; local in function:rip6_attach
627 struct inpcb *inp = sotoinpcb(so); local in function:rip6_detach
654 struct inpcb *inp = sotoinpcb(so); local in function:rip6_bind
708 struct inpcb *inp = sotoinpcb(so); local in function:rip6_connect
773 struct inpcb *inp = sotoinpcb(so); local in function:rip6_disconnect
865 struct inpcb *inp = sotoinpcb(so); local in function:rip6_send
    [all...]
  /src/sbin/fsck_ffs/
pass3.c 57 struct inoinfo *inp, **inpp; local in function:pass3
77 inp = *inpp;
78 state = inoinfo(inp->i_number)->ino_state;
79 if (inp->i_number == UFS_ROOTINO ||
80 (inp->i_parent != 0 && state != DSTATE))
92 if (inp->i_dotdot >= UFS_ROOTINO)
93 inoinfo(inp->i_dotdot)->ino_linkcnt++;
97 orphan = inp->i_number;
98 if (inp->i_parent == 0 ||
99 inoinfo(inp->i_parent)->ino_state != DSTATE |
    [all...]
pass2.c 67 struct inoinfo **inpp, *inp, *pinp; local in function:pass2
161 inp = *inpp;
162 if (inp->i_isize == 0)
164 if (inp->i_isize < MINDIRSIZE) {
165 direrror(inp->i_number, "DIRECTORY TOO SHORT");
166 inp->i_isize = roundup(MINDIRSIZE, dirblksiz);
168 dp = ginode(inp->i_number);
169 DIP_SET(dp, size, iswap64(inp->i_isize));
173 } else if ((inp->i_isize & (dirblksiz - 1)) != 0) {
174 getpathname(pathbuf, sizeof(pathbuf), inp->i_number
327 struct inoinfo *inp; local in function:pass2check
    [all...]
  /src/sys/coda/
coda_venus.c 64 struct coda_in_hdr *inp; \
72 struct name ## _in *inp; \
80 struct name ## _in *inp; \
89 CODA_ALLOC(inp, struct coda_in_hdr *, name ## _size);\
90 outp = (struct name ## _out *) inp
95 CODA_ALLOC(inp, struct name ## _in *, name ## _size);\
96 outp = (struct name ## _out *) inp
101 CODA_ALLOC(inp, struct name ## _in *, name ## _size);\
104 memcpy((char *)inp + (int)inp->struc, name, len);
    [all...]
  /src/bin/dd/
conv.c 65 u_char *inp; local in function:def
69 for (inp = in.dbp - (cnt = in.dbrcnt); cnt--; ++inp)
70 *inp = t[*inp];
122 u_char *inp, *outp; local in function:block
132 for (inp = in.db, cnt = in.dbrcnt;
133 cnt && *inp++ != '\n'; --cnt);
142 in.dbp = inp + cnt - 1;
149 for (inp = in.dbp - in.dbcnt, outp = out.dbp; in.dbcnt;)
233 u_char *inp; local in function:unblock
    [all...]
  /src/usr.bin/patch/
Makefile 6 SRCS= patch.c pch.c inp.c util.c backupfile.c mkpath.c
  /src/usr.bin/systat/
netstat.c 218 struct inpcb *inpcbp, *inp; local in function:fetchnetstat4
229 inp = (struct inpcb *)&in4pcb;
230 if (inp->inp_queue.tqe_prev != pprev) {
237 next = inp->inp_queue.tqe_next;
239 if (inp->inp_af != AF_INET)
241 if (!aflag && inet_lnaof(in4p_laddr(inp)) == INADDR_ANY)
243 if (nhosts && !checkhost(inp))
245 if (nports && !checkport(inp))
247 KREAD(inp->inp_socket, &sockb, sizeof (sockb));
249 KREAD(inp->inp_ppcb, &tcpcb, sizeof (tcpcb))
265 struct inpcb *inp, *inpcbp; local in function:fetchnetstat6
    [all...]
  /src/usr.bin/m4/
trace.c 152 print_header(struct input_file *inp)
156 fprintf(traceout, "%s:", inp->name);
158 fprintf(traceout, "%lu:", TOKEN_LINE(inp));
165 trace(const char *argv[], int argc, struct input_file *inp)
169 print_header(inp);
172 print_header(inp);
194 print_header(inp);

Completed in 26 milliseconds

1 2 3 4