ndmp9_error ndmis_audit_tape_connect (struct ndm_session *sess, ndmp9_addr_type addr_type, char *reason) { struct ndm_image_stream *is; struct ndmis_end_point *mine_ep; struct ndmis_end_point *peer_ep; /* * We are about to start using an Image Stream so allocate it. * Only do this when not allocated yet. */ if (!sess->plumb.image_stream) { if (ndmis_initialize (sess)) { return NDMP9_NO_MEM_ERR; } } is = sess->plumb.image_stream; mine_ep = &is->tape_ep; peer_ep = &is->data_ep; return ndmis_audit_ep_listen (sess, addr_type, reason, mine_ep, peer_ep); }
ndmp9_error ndmis_ep_listen ( struct ndm_session *sess, ndmp9_addr_type addr_type, ndmp9_addr *ret_addr, char *reason, struct ndmis_end_point *mine_ep, struct ndmis_end_point *peer_ep) { struct ndm_image_stream *is = &sess->plumb.image_stream; char * reason_end; ndmp9_error error; error = ndmis_audit_ep_listen (sess, addr_type, reason, mine_ep, peer_ep); if (error != NDMP9_NO_ERR) return error; reason_end = reason; while (*reason_end && *reason_end != ':') reason_end++; *reason_end++ = ':'; *reason_end++ = ' '; *reason_end = 0; NDMOS_MACRO_ZEROFILL (ret_addr); ret_addr->addr_type = addr_type; switch (addr_type) { case NDMP9_ADDR_LOCAL: mine_ep->addr_type = NDMP9_ADDR_LOCAL; mine_ep->connect_status = NDMIS_CONN_LISTEN; is->remote.connect_status = NDMIS_CONN_EXCLUDE; break; case NDMP9_ADDR_TCP: if (ndmis_tcp_listen (sess, ret_addr) != 0) { strcpy (reason_end, "TCP listen() failed"); error = NDMP9_CONNECT_ERR; goto out; } mine_ep->addr_type = NDMP9_ADDR_TCP; mine_ep->connect_status = NDMIS_CONN_LISTEN; peer_ep->connect_status = NDMIS_CONN_REMOTE; break; default: reason = "unknown addr_type (bad)"; error = NDMP9_ILLEGAL_ARGS_ERR; goto out; } out: if (error == NDMP9_NO_ERR) strcpy (reason_end, "OK"); return error; }
ndmp9_error ndmis_audit_tape_listen (struct ndm_session *sess, ndmp9_addr_type addr_type, char *reason) { struct ndm_image_stream *is = &sess->plumb.image_stream; struct ndmis_end_point *mine_ep = &is->tape_ep; struct ndmis_end_point *peer_ep = &is->data_ep; return ndmis_audit_ep_listen (sess, addr_type, reason, mine_ep, peer_ep); }