+int nx_addr_conflict(struct nx_info *nxi, uint32_t addr, struct sock *sk)
+{
+ vxdprintk(VXD_CBIT(net, 2),
+ "nx_addr_conflict(%p,%p) %d.%d,%d.%d",
+ nxi, sk, VXD_QUAD(addr));
+
+ if (addr) {
+ /* check real address */
+ return __addr_in_socket(sk, addr);
+ } else if (nxi) {
+ /* check against nx_info */
+ int i, n = nxi->nbipv4;
+
+ for (i=0; i<n; i++)
+ if (__addr_in_socket(sk, nxi->ipv4[i]))
+ return 1;
+ return 0;
+ } else {
+ /* check against any */
+ return 1;
+ }
+}
+
+#endif /* CONFIG_INET */
+
+void nx_set_persistent(struct nx_info *nxi)
+{
+ if (nx_info_flags(nxi, NXF_PERSISTENT, 0)) {
+ get_nx_info(nxi);
+ claim_nx_info(nxi, current);
+ } else {
+ release_nx_info(nxi, current);
+ put_nx_info(nxi);
+ }
+}