forked from mirrors/linux
		
	neigh: Allow for user space users of the neighbour table
Currently it is possible to do just about everything with the arp table from user space except treat an entry like you are using it. To that end implement and a flag NTF_USE that when set in a netwlink update request treats the neighbour table entry like the kernel does on the output path. This allows user space applications to share the kernel's arp cache. Signed-off-by: Eric Biederman <ebiederm@aristanetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
							parent
							
								
									fc1f9ea51d
								
							
						
					
					
						commit
						0c5c2d3089
					
				
					 2 changed files with 6 additions and 1 deletions
				
			
		| 
						 | 
					@ -31,6 +31,7 @@ enum
 | 
				
			||||||
 *	Neighbor Cache Entry Flags
 | 
					 *	Neighbor Cache Entry Flags
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define NTF_USE		0x01
 | 
				
			||||||
#define NTF_PROXY	0x08	/* == ATF_PUBL */
 | 
					#define NTF_PROXY	0x08	/* == ATF_PUBL */
 | 
				
			||||||
#define NTF_ROUTER	0x80
 | 
					#define NTF_ROUTER	0x80
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1654,6 +1654,10 @@ static int neigh_add(struct sk_buff *skb, struct nlmsghdr *nlh, void *arg)
 | 
				
			||||||
				flags &= ~NEIGH_UPDATE_F_OVERRIDE;
 | 
									flags &= ~NEIGH_UPDATE_F_OVERRIDE;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (ndm->ndm_flags & NTF_USE) {
 | 
				
			||||||
 | 
								neigh_event_send(neigh, NULL);
 | 
				
			||||||
 | 
								err = 0;
 | 
				
			||||||
 | 
							} else
 | 
				
			||||||
			err = neigh_update(neigh, lladdr, ndm->ndm_state, flags);
 | 
								err = neigh_update(neigh, lladdr, ndm->ndm_state, flags);
 | 
				
			||||||
		neigh_release(neigh);
 | 
							neigh_release(neigh);
 | 
				
			||||||
		goto out_dev_put;
 | 
							goto out_dev_put;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue