int tipc_register_media(struct tipc_media *m_ptr) { int res = -EINVAL; write_lock_bh(&tipc_net_lock); if (!media_name_valid(m_ptr->name)) goto exit; if ((m_ptr->bcast_addr.media_id != m_ptr->type_id) || !m_ptr->bcast_addr.broadcast) goto exit; if (m_ptr->priority > TIPC_MAX_LINK_PRI) goto exit; if ((m_ptr->tolerance < TIPC_MIN_LINK_TOL) || (m_ptr->tolerance > TIPC_MAX_LINK_TOL)) goto exit; if (media_count >= MAX_MEDIA) goto exit; if (tipc_media_find(m_ptr->name) || media_find_id(m_ptr->type_id)) goto exit; media_list[media_count] = m_ptr; media_count++; res = 0; exit: write_unlock_bh(&tipc_net_lock); if (res) warn("Media <%s> registration error\n", m_ptr->name); return res; }
void tipc_media_addr_printf(struct print_buf *pb, struct tipc_media_addr *a) { char addr_str[MAX_ADDR_STR]; struct tipc_media *m_ptr; m_ptr = media_find_id(a->media_id); if (m_ptr && !m_ptr->addr2str(a, addr_str, sizeof(addr_str))) tipc_printf(pb, "%s(%s)", m_ptr->name, addr_str); else { u32 i; tipc_printf(pb, "UNKNOWN(%u)", a->media_id); for (i = 0; i < sizeof(a->value); i++) tipc_printf(pb, "-%02x", a->value[i]); } }
/** * tipc_media_addr_printf - record media address in print buffer */ void tipc_media_addr_printf(char *buf, int len, struct tipc_media_addr *a) { char addr_str[MAX_ADDR_STR]; struct tipc_media *m_ptr; int ret; m_ptr = media_find_id(a->media_id); if (m_ptr && !m_ptr->addr2str(a, addr_str, sizeof(addr_str))) ret = tipc_snprintf(buf, len, "%s(%s)", m_ptr->name, addr_str); else { u32 i; ret = tipc_snprintf(buf, len, "UNKNOWN(%u)", a->media_id); for (i = 0; i < sizeof(a->value); i++) ret += tipc_snprintf(buf - ret, len + ret, "-%02x", a->value[i]); } }