extern void *safe_realloc_ary(void *p, size_t size, size_t count,
const char *message);
+#define NEW(p) \
+ ((p)=safe_malloc(sizeof(*(p)), \
+ __FILE__ ":" #p))
+#define NEW_ARY(p,count) \
+ ((p)=safe_malloc_ary(sizeof(*(p)),(count), \
+ __FILE__ ":" #p "[" #count "]"))
+#define REALLOC_ARY(p,count) \
+ ((p)=safe_realloc_ary((p),sizeof(*(p)),(count), \
+ __FILE__ ":" #p "[" #count "]"))
+
void setcloexec(int fd); /* cannot fail */
void setnonblock(int fd); /* cannot fail */
void pipe_cloexec(int fd[2]); /* pipe(), setcloexec() twice; cannot fail */
comm_addr_to_string_fn *addr_to_string;
};
-bool_t iaddr_equal(const union iaddr *ia, const union iaddr *ib);
+bool_t iaddr_equal(const union iaddr *ia, const union iaddr *ib,
+ bool_t ignoreport);
static inline const char *comm_addr_to_string(const struct comm_addr *ca)
{
static inline bool_t comm_addr_equal(const struct comm_addr *a,
const struct comm_addr *b)
{
- return a->comm==b->comm && iaddr_equal(&a->ia,&b->ia);
+ return a->comm==b->comm && iaddr_equal(&a->ia,&b->ia,False);
}
/* LOG interface */