forked from mirrors/linux
		
	unix_diag: Fixup RQLEN extension report
While it's not too late fix the recently added RQLEN diag extension to report rqlen and wqlen in the same way as TCP does. I.e. for listening sockets the ack backlog length (which is the input queue length for socket) in rqlen and the max ack backlog length in wqlen, and what the CINQ/OUTQ ioctls do for established. Signed-off-by: Pavel Emelyanov <xemul@parallels.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
							parent
							
								
									885ee74d5d
								
							
						
					
					
						commit
						c9da99e647
					
				
					 2 changed files with 17 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -46,4 +46,9 @@ struct unix_diag_vfs {
 | 
			
		|||
	__u32	udiag_vfs_dev;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct unix_diag_rqlen {
 | 
			
		||||
	__u32	udiag_rqueue;
 | 
			
		||||
	__u32	udiag_wqueue;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -101,7 +101,18 @@ static int sk_diag_dump_icons(struct sock *sk, struct sk_buff *nlskb)
 | 
			
		|||
 | 
			
		||||
static int sk_diag_show_rqlen(struct sock *sk, struct sk_buff *nlskb)
 | 
			
		||||
{
 | 
			
		||||
	RTA_PUT_U32(nlskb, UNIX_DIAG_RQLEN, sk->sk_receive_queue.qlen);
 | 
			
		||||
	struct unix_diag_rqlen *rql;
 | 
			
		||||
 | 
			
		||||
	rql = UNIX_DIAG_PUT(nlskb, UNIX_DIAG_RQLEN, sizeof(*rql));
 | 
			
		||||
 | 
			
		||||
	if (sk->sk_state == TCP_LISTEN) {
 | 
			
		||||
		rql->udiag_rqueue = sk->sk_receive_queue.qlen;
 | 
			
		||||
		rql->udiag_wqueue = sk->sk_max_ack_backlog;
 | 
			
		||||
	} else {
 | 
			
		||||
		rql->udiag_rqueue = (__u32)unix_inq_len(sk);
 | 
			
		||||
		rql->udiag_wqueue = (__u32)unix_outq_len(sk);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
 | 
			
		||||
rtattr_failure:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue