-static int ip_map_update(struct ip_map *ipm, struct unix_domain *udom, time_t expiry)
-{
- struct ip_map ip;
- struct cache_head *ch;
-
- ip.m_client = udom;
- ip.h.flags = 0;
- if (!udom)
- set_bit(CACHE_NEGATIVE, &ip.h.flags);
- else {
- ip.m_add_change = udom->addr_changes;
- /* if this is from the legacy set_client system call,
- * we need m_add_change to be one higher
- */
- if (expiry == NEVER)
- ip.m_add_change++;
- }
- ip.h.expiry_time = expiry;
- ch = sunrpc_cache_update(&ip_map_cache,
- &ip.h, &ipm->h,
- hash_str(ipm->m_class, IP_HASHBITS) ^
- hash_ip((unsigned long)ipm->m_addr.s_addr));
- if (!ch)
- return -ENOMEM;
- cache_put(ch, &ip_map_cache);
- return 0;
-}