net: sock: allow eBPF programs to be attached to sockets
introduce new setsockopt() command: setsockopt(sock, SOL_SOCKET, SO_ATTACH_BPF, &prog_fd, sizeof(prog_fd)) where prog_fd was received from syscall bpf(BPF_PROG_LOAD, attr, ...) and attr->prog_type == BPF_PROG_TYPE_SOCKET_FILTER setsockopt() calls bpf_prog_get() which increments refcnt of the program, so it doesn't get unloaded while socket is using the program. The same eBPF program can be attached to multiple sockets. User task exit automatically closes socket which calls sk_filter_uncharge() which decrements refcnt of eBPF program Signed-off-by: Alexei Starovoitov <ast@plumgrid.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
					parent
					
						
							
								ddd872bc30
							
						
					
				
			
			
				commit
				
					
						89aa075832
					
				
			
		
					 18 changed files with 155 additions and 2 deletions
				
			
		| 
						 | 
				
			
			@ -78,6 +78,9 @@
 | 
			
		|||
 | 
			
		||||
#define SO_INCOMING_CPU		0x0033
 | 
			
		||||
 | 
			
		||||
#define SO_ATTACH_BPF		0x0034
 | 
			
		||||
#define SO_DETACH_BPF		SO_DETACH_FILTER
 | 
			
		||||
 | 
			
		||||
/* Security levels - as per NRL IPv6 - don't actually do anything */
 | 
			
		||||
#define SO_SECURITY_AUTHENTICATION		0x5001
 | 
			
		||||
#define SO_SECURITY_ENCRYPTION_TRANSPORT	0x5002
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue