const char *MPID_nem_ptl_strlist(ptl_list_t pt_list) { switch (pt_list) { CASE_STR(PTL_OVERFLOW_LIST); CASE_STR(PTL_PRIORITY_LIST); default: return "UNKNOWN"; } }
const char *janus_text2pcap_packet_string(janus_text2pcap_packet type) { switch(type) { CASE_STR(JANUS_TEXT2PCAP_RTP); CASE_STR(JANUS_TEXT2PCAP_RTCP); CASE_STR(JANUS_TEXT2PCAP_DATA); default: break; } return NULL; }
const char *MPID_nem_ptl_strnifail(ptl_ni_fail_t ni_fail) { switch (ni_fail) { CASE_STR(PTL_NI_OK); CASE_STR(PTL_NI_UNDELIVERABLE); CASE_STR(PTL_NI_DROPPED); CASE_STR(PTL_NI_PT_DISABLED); CASE_STR(PTL_NI_PERM_VIOLATION); CASE_STR(PTL_NI_OP_VIOLATION); CASE_STR(PTL_NI_NO_MATCH); CASE_STR(PTL_NI_SEGV); default: return "UNKNOWN"; } }
static const char* textureFormatToString(GLint fmt) { switch (fmt) { CASE_STR(GL_RGB); CASE_STR(GL_RGBA); CASE_STR(GL_BGRA); #if OPENGL_ES CASE_STR(GL_RGB16F_EXT); #else CASE_STR(GL_BGR); CASE_STR(GL_RGBA16F_ARB); CASE_STR(GL_RGB16F_ARB); #endif default: return "<unknown>"; } }
static const char *janus_websockets_reason_string(enum lws_callback_reasons reason) { #else static const char *janus_websockets_reason_string(enum libwebsocket_callback_reasons reason) { #endif switch(reason) { CASE_STR(LWS_CALLBACK_ESTABLISHED); CASE_STR(LWS_CALLBACK_CLIENT_CONNECTION_ERROR); CASE_STR(LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH); CASE_STR(LWS_CALLBACK_CLIENT_ESTABLISHED); CASE_STR(LWS_CALLBACK_CLOSED); CASE_STR(LWS_CALLBACK_CLOSED_HTTP); CASE_STR(LWS_CALLBACK_RECEIVE); CASE_STR(LWS_CALLBACK_CLIENT_RECEIVE); CASE_STR(LWS_CALLBACK_CLIENT_RECEIVE_PONG); CASE_STR(LWS_CALLBACK_CLIENT_WRITEABLE); CASE_STR(LWS_CALLBACK_SERVER_WRITEABLE); CASE_STR(LWS_CALLBACK_HTTP); CASE_STR(LWS_CALLBACK_HTTP_BODY); CASE_STR(LWS_CALLBACK_HTTP_BODY_COMPLETION); CASE_STR(LWS_CALLBACK_HTTP_FILE_COMPLETION); CASE_STR(LWS_CALLBACK_HTTP_WRITEABLE); CASE_STR(LWS_CALLBACK_FILTER_NETWORK_CONNECTION); CASE_STR(LWS_CALLBACK_FILTER_HTTP_CONNECTION); CASE_STR(LWS_CALLBACK_SERVER_NEW_CLIENT_INSTANTIATED); CASE_STR(LWS_CALLBACK_FILTER_PROTOCOL_CONNECTION); CASE_STR(LWS_CALLBACK_OPENSSL_LOAD_EXTRA_CLIENT_VERIFY_CERTS); CASE_STR(LWS_CALLBACK_OPENSSL_LOAD_EXTRA_SERVER_VERIFY_CERTS); CASE_STR(LWS_CALLBACK_OPENSSL_PERFORM_CLIENT_CERT_VERIFICATION); CASE_STR(LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER); CASE_STR(LWS_CALLBACK_CONFIRM_EXTENSION_OKAY); CASE_STR(LWS_CALLBACK_CLIENT_CONFIRM_EXTENSION_SUPPORTED); CASE_STR(LWS_CALLBACK_PROTOCOL_INIT); CASE_STR(LWS_CALLBACK_PROTOCOL_DESTROY); CASE_STR(LWS_CALLBACK_WSI_CREATE); CASE_STR(LWS_CALLBACK_WSI_DESTROY); CASE_STR(LWS_CALLBACK_GET_THREAD_ID); CASE_STR(LWS_CALLBACK_ADD_POLL_FD); CASE_STR(LWS_CALLBACK_DEL_POLL_FD); CASE_STR(LWS_CALLBACK_CHANGE_MODE_POLL_FD); CASE_STR(LWS_CALLBACK_LOCK_POLL); CASE_STR(LWS_CALLBACK_UNLOCK_POLL); CASE_STR(LWS_CALLBACK_OPENSSL_CONTEXT_REQUIRES_PRIVATE_KEY); CASE_STR(LWS_CALLBACK_USER); default: break; } return NULL; } /* Helper method to return the interface associated with a local IP address */ static char *janus_websockets_get_interface_name(const char *ip) { struct ifaddrs *addrs = NULL, *iap = NULL; getifaddrs(&addrs); for(iap = addrs; iap != NULL; iap = iap->ifa_next) { if(iap->ifa_addr && (iap->ifa_flags & IFF_UP)) { if(iap->ifa_addr->sa_family == AF_INET) { struct sockaddr_in *sa = (struct sockaddr_in *)(iap->ifa_addr); char buffer[16]; inet_ntop(iap->ifa_addr->sa_family, (void *)&(sa->sin_addr), buffer, sizeof(buffer)); if(!strcmp(ip, buffer)) return g_strdup(iap->ifa_name); } else if(iap->ifa_addr->sa_family == AF_INET6) { struct sockaddr_in6 *sa = (struct sockaddr_in6 *)(iap->ifa_addr); char buffer[48]; inet_ntop(iap->ifa_addr->sa_family, (void *)&(sa->sin6_addr), buffer, sizeof(buffer)); if(!strcmp(ip, buffer)) return g_strdup(iap->ifa_name); } } } freeifaddrs(addrs); return NULL; } /* WebSockets ACL list for both Janus and Admin API */ GList *janus_websockets_access_list = NULL, *janus_websockets_admin_access_list = NULL; janus_mutex access_list_mutex; static void janus_websockets_allow_address(const char *ip, gboolean admin) { if(ip == NULL) return; /* Is this an IP or an interface? */ janus_mutex_lock(&access_list_mutex); if(!admin) janus_websockets_access_list = g_list_append(janus_websockets_access_list, (gpointer)ip); else janus_websockets_admin_access_list = g_list_append(janus_websockets_admin_access_list, (gpointer)ip); janus_mutex_unlock(&access_list_mutex); } static gboolean janus_websockets_is_allowed(const char *ip, gboolean admin) { JANUS_LOG(LOG_VERB, "Checking if %s is allowed to contact %s interface\n", ip, admin ? "admin" : "janus"); if(ip == NULL) return FALSE; if(!admin && janus_websockets_access_list == NULL) { JANUS_LOG(LOG_VERB, "Yep\n"); return TRUE; } if(admin && janus_websockets_admin_access_list == NULL) { JANUS_LOG(LOG_VERB, "Yeah\n"); return TRUE; } janus_mutex_lock(&access_list_mutex); GList *temp = admin ? janus_websockets_admin_access_list : janus_websockets_access_list; while(temp) { const char *allowed = (const char *)temp->data; if(allowed != NULL && strstr(ip, allowed)) { janus_mutex_unlock(&access_list_mutex); return TRUE; } temp = temp->next; } janus_mutex_unlock(&access_list_mutex); JANUS_LOG(LOG_VERB, "Nope...\n"); return FALSE; }
static const char *janus_websockets_reason_string(enum lws_callback_reasons reason) { switch(reason) { CASE_STR(LWS_CALLBACK_ESTABLISHED); CASE_STR(LWS_CALLBACK_CLIENT_CONNECTION_ERROR); CASE_STR(LWS_CALLBACK_CLIENT_FILTER_PRE_ESTABLISH); CASE_STR(LWS_CALLBACK_CLIENT_ESTABLISHED); CASE_STR(LWS_CALLBACK_CLOSED); CASE_STR(LWS_CALLBACK_CLOSED_HTTP); CASE_STR(LWS_CALLBACK_RECEIVE); CASE_STR(LWS_CALLBACK_CLIENT_RECEIVE); CASE_STR(LWS_CALLBACK_CLIENT_RECEIVE_PONG); CASE_STR(LWS_CALLBACK_CLIENT_WRITEABLE); CASE_STR(LWS_CALLBACK_SERVER_WRITEABLE); CASE_STR(LWS_CALLBACK_HTTP); CASE_STR(LWS_CALLBACK_HTTP_BODY); CASE_STR(LWS_CALLBACK_HTTP_BODY_COMPLETION); CASE_STR(LWS_CALLBACK_HTTP_FILE_COMPLETION); CASE_STR(LWS_CALLBACK_HTTP_WRITEABLE); CASE_STR(LWS_CALLBACK_FILTER_NETWORK_CONNECTION); CASE_STR(LWS_CALLBACK_FILTER_HTTP_CONNECTION); CASE_STR(LWS_CALLBACK_SERVER_NEW_CLIENT_INSTANTIATED); CASE_STR(LWS_CALLBACK_FILTER_PROTOCOL_CONNECTION); CASE_STR(LWS_CALLBACK_OPENSSL_LOAD_EXTRA_CLIENT_VERIFY_CERTS); CASE_STR(LWS_CALLBACK_OPENSSL_LOAD_EXTRA_SERVER_VERIFY_CERTS); CASE_STR(LWS_CALLBACK_OPENSSL_PERFORM_CLIENT_CERT_VERIFICATION); CASE_STR(LWS_CALLBACK_CLIENT_APPEND_HANDSHAKE_HEADER); CASE_STR(LWS_CALLBACK_CONFIRM_EXTENSION_OKAY); CASE_STR(LWS_CALLBACK_CLIENT_CONFIRM_EXTENSION_SUPPORTED); CASE_STR(LWS_CALLBACK_PROTOCOL_INIT); CASE_STR(LWS_CALLBACK_PROTOCOL_DESTROY); CASE_STR(LWS_CALLBACK_WSI_CREATE); CASE_STR(LWS_CALLBACK_WSI_DESTROY); CASE_STR(LWS_CALLBACK_GET_THREAD_ID); CASE_STR(LWS_CALLBACK_ADD_POLL_FD); CASE_STR(LWS_CALLBACK_DEL_POLL_FD); CASE_STR(LWS_CALLBACK_CHANGE_MODE_POLL_FD); CASE_STR(LWS_CALLBACK_LOCK_POLL); CASE_STR(LWS_CALLBACK_UNLOCK_POLL); CASE_STR(LWS_CALLBACK_OPENSSL_CONTEXT_REQUIRES_PRIVATE_KEY); CASE_STR(LWS_CALLBACK_USER); CASE_STR(LWS_CALLBACK_RECEIVE_PONG); default: break; } return NULL; }
static const char* eglErrorString(EGLint err) { string str; switch (err) { CASE_STR(EGL_SUCCESS, "no error"); CASE_STR(EGL_NOT_INITIALIZED, "EGL not, or could not be, initialized"); CASE_STR(EGL_BAD_ACCESS, "access violation"); CASE_STR(EGL_BAD_ALLOC, "could not allocate resources"); CASE_STR(EGL_BAD_ATTRIBUTE, "invalid attribute"); CASE_STR(EGL_BAD_CONTEXT, "invalid context specified"); CASE_STR(EGL_BAD_CONFIG, "invald frame buffer configuration specified"); CASE_STR(EGL_BAD_CURRENT_SURFACE, "current window, pbuffer or pixmap surface is no longer valid"); CASE_STR(EGL_BAD_DISPLAY, "invalid display specified"); CASE_STR(EGL_BAD_SURFACE, "invalid surface specified"); CASE_STR(EGL_BAD_MATCH, "bad argument match"); CASE_STR(EGL_BAD_PARAMETER, "invalid paramater"); CASE_STR(EGL_BAD_NATIVE_PIXMAP, "invalid NativePixmap"); CASE_STR(EGL_BAD_NATIVE_WINDOW, "invalid NativeWindow"); CASE_STR(EGL_CONTEXT_LOST, "APM event caused context loss"); default: str = "unknown error " + ofToString(err); break; } return str.c_str(); }
const char *MPID_nem_ptl_strevent(const ptl_event_t *ev) { switch (ev->type) { CASE_STR(PTL_EVENT_GET); CASE_STR(PTL_EVENT_GET_OVERFLOW); CASE_STR(PTL_EVENT_PUT); CASE_STR(PTL_EVENT_PUT_OVERFLOW); CASE_STR(PTL_EVENT_ATOMIC); CASE_STR(PTL_EVENT_ATOMIC_OVERFLOW); CASE_STR(PTL_EVENT_FETCH_ATOMIC); CASE_STR(PTL_EVENT_FETCH_ATOMIC_OVERFLOW); CASE_STR(PTL_EVENT_REPLY); CASE_STR(PTL_EVENT_SEND); CASE_STR(PTL_EVENT_ACK); CASE_STR(PTL_EVENT_PT_DISABLED); CASE_STR(PTL_EVENT_LINK); CASE_STR(PTL_EVENT_AUTO_UNLINK); CASE_STR(PTL_EVENT_AUTO_FREE); CASE_STR(PTL_EVENT_SEARCH); default: return "UNKNOWN"; } }
const char *MPID_nem_ptl_strerror(int ret) { switch (ret) { CASE_STR(PTL_OK); CASE_STR(PTL_ARG_INVALID); CASE_STR(PTL_CT_NONE_REACHED); CASE_STR(PTL_EQ_DROPPED); CASE_STR(PTL_EQ_EMPTY); CASE_STR(PTL_FAIL); CASE_STR(PTL_IN_USE); CASE_STR(PTL_INTERRUPTED); CASE_STR(PTL_IGNORED); CASE_STR(PTL_LIST_TOO_LONG); CASE_STR(PTL_NO_INIT); CASE_STR(PTL_NO_SPACE); CASE_STR(PTL_PID_IN_USE); CASE_STR(PTL_PT_FULL); CASE_STR(PTL_PT_EQ_NEEDED); CASE_STR(PTL_PT_IN_USE); default: return "UNKNOWN"; } }
static string getGLFrameBufferStatusString(GLenum err) { switch(err) { case 0: return "Error checking framebuffer status"; CASE_STR(GL_FRAMEBUFFER_COMPLETE); CASE_STR(GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT); CASE_STR(GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT); CASE_STR(GL_FRAMEBUFFER_UNSUPPORTED); #if OPENGL_ES CASE_STR(GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS); #else CASE_STR(GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT); CASE_STR(GL_FRAMEBUFFER_UNDEFINED); CASE_STR(GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER); CASE_STR(GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER); CASE_STR(GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE); CASE_STR(GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT); CASE_STR(GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT); #endif default: return str_format("0x%0x", err); } }