Lines Matching defs:ip
10 #include "mail-ip.h"
17 static size_t mail_ip_memsize(const struct mail_ip *ip)
19 return sizeof(*ip);
24 struct mail_ip *ip;
26 ip = hash_table_lookup(mail_ips_hash, ip_addr);
27 if (ip != NULL) {
28 ip->num_logins++;
29 ip->num_connected_sessions++;
30 mail_ip_refresh(ip, NULL);
31 return ip;
34 ip = i_malloc(MALLOC_ADD(sizeof(struct mail_ip), stats_alloc_size()));
35 ip->stats = (void *)(ip + 1);
36 ip->ip = *ip_addr;
37 ip->reset_timestamp = ioloop_time;
39 hash_table_insert(mail_ips_hash, &ip->ip, ip);
40 DLLIST_PREPEND_FULL(&stable_mail_ips, ip, stable_prev, stable_next);
41 DLLIST2_APPEND_FULL(&mail_ips_head, &mail_ips_tail, ip,
43 ip->num_logins++;
44 ip->num_connected_sessions++;
45 ip->last_update = ioloop_timeval;
46 global_memory_alloc(mail_ip_memsize(ip));
47 return ip;
50 void mail_ip_disconnected(struct mail_ip *ip)
52 i_assert(ip->num_connected_sessions > 0);
53 ip->num_connected_sessions--;
61 void mail_ip_ref(struct mail_ip *ip)
63 ip->refcount++;
68 struct mail_ip *ip = *_ip;
70 i_assert(ip->refcount > 0);
71 ip->refcount--;
76 static void mail_ip_free(struct mail_ip *ip)
78 i_assert(ip->refcount == 0);
79 i_assert(ip->sessions == NULL);
81 global_memory_free(mail_ip_memsize(ip));
82 hash_table_remove(mail_ips_hash, &ip->ip);
83 DLLIST_REMOVE_FULL(&stable_mail_ips, ip, stable_prev, stable_next);
84 DLLIST2_REMOVE_FULL(&mail_ips_head, &mail_ips_tail, ip,
87 i_free(ip);
90 void mail_ip_refresh(struct mail_ip *ip, const struct stats *diff_stats)
93 stats_add(ip->stats, diff_stats);
94 ip->last_update = ioloop_timeval;
95 DLLIST2_REMOVE_FULL(&mail_ips_head, &mail_ips_tail, ip,
97 DLLIST2_APPEND_FULL(&mail_ips_head, &mail_ips_tail, ip,