Lines Matching refs:so
110 #define SOFLOW_LOG(level, so, debug, fmt, ...) … argument
115 …so ? SOFLOW_SOCKET_PID(so) : 0, so ? (uint64_t)VM_KERNEL_ADDRPERM(so) : 0, ##__VA_ARGS__); …
118 …so ? SOFLOW_SOCKET_PID(so) : 0, so ? (uint64_t)VM_KERNEL_ADDRPERM(so) : 0, ##__VA_ARGS__); …
123 #define SOFLOW_ENTRY_LOG(level, so, entry, debug, msg) … argument
126 …soflow_entry_log(level, so, entry, msg); …
132 #define SOFLOW_IS_UDP(so) (so && SOCK_CHECK_TYPE(so, SOCK_DGRAM) && SOCK_CHECK_PROTO(so, IPPROTO_UD… argument
133 #define SOFLOW_GET_SO_PROTO(so) (so ? SOCK_PROTO(so) : IPPROTO_MAX) argument
135 #define SOFLOW_SOCKET_PID(so) ((so->so_flags & SOF_DELEGATED) ? so->e_pid : so->last_pid) argument
137 #define SOFLOW_ENABLE_DEBUG(so, entry) \ argument
139 (soflow_log_pid == 0 || !so || soflow_log_pid == SOFLOW_SOCKET_PID(so)) && \
140 (soflow_log_proto == 0 || !so || soflow_log_proto == SOFLOW_GET_SO_PROTO(so)))
212 soflow_entry_log(int level, struct socket *so, struct soflow_hash_entry *entry, const char* msg) in soflow_entry_log() argument
241 …SOFLOW_LOG(level, so, entry->soflow_debug, "<%s>: %s <%s(%d) entry %p, featureID %llu, filter_ctl … in soflow_entry_log()
244 SOFLOW_IS_UDP(so) ? "UDP" : "proto", SOFLOW_GET_SO_PROTO(so), in soflow_entry_log()
393 soflow_db_init(struct socket *so) in soflow_db_init() argument
400 db->soflow_db_so = so; in soflow_db_init()
408 db->soflow_db_debug = SOFLOW_ENABLE_DEBUG(so, hash_entry); in soflow_db_init()
410 so->so_flow_db = db; in soflow_db_init()
418 …struct socket *so = (hash_entry && hash_entry->soflow_db) ? hash_entry->soflow_db->soflow_db_so : … in soflow_entry_free() local
424 SOFLOW_ENTRY_LOG(LOG_INFO, so, hash_entry, hash_entry->soflow_debug, "Free entry"); in soflow_entry_free()
504 soflow_detach(struct socket *so) in soflow_detach() argument
506 if (so == NULL || so->so_flow_db == NULL) { in soflow_detach()
509 SOFLOW_DB_FREE(so->so_flow_db); in soflow_detach()
510 so->so_flow_db = NULL; in soflow_detach()
786 struct socket *so = NULL; in soflow_udp_get_address_from_control() local
800 SOFLOW_LOG(LOG_DEBUG, so, true, "Check control type %d", cm->cmsg_type); in soflow_udp_get_address_from_control()
843 soflow_entry_local_port_needs_update(struct socket *so, struct soflow_hash_entry *entry) in soflow_entry_local_port_needs_update() argument
845 if (SOFLOW_IS_UDP(so)) { in soflow_entry_local_port_needs_update()
921 ifnet_to_flags(struct ifnet *ifp, struct socket *so) in ifnet_to_flags() argument
934 if (so != NULL && (so->so_flags1 & SOF1_CELLFALLBACK)) { in ifnet_to_flags()
947 …struct socket *so = (hash_entry && hash_entry->soflow_db) ? hash_entry->soflow_db->soflow_db_so : … in soflow_nstat_provider_request_vals() local
948 struct inpcb *inp = so ? sotoinpcb(so) : NULL; in soflow_nstat_provider_request_vals()
953 if (hash_entry == NULL || so == NULL || inp == NULL) { in soflow_nstat_provider_request_vals()
960 *ifflagsp = ifnet_to_flags(ifp, so); in soflow_nstat_provider_request_vals()
963 SOFLOW_LOG(LOG_DEBUG, so, hash_entry->soflow_debug, "ifflagsp set to 0x%X", *ifflagsp); in soflow_nstat_provider_request_vals()
975 SOFLOW_LOG(LOG_DEBUG, so, hash_entry->soflow_debug, in soflow_nstat_provider_request_vals()
984 if (so->so_flags & SOF_DELEGATED) { in soflow_nstat_provider_request_vals()
985 desc->eupid = so->e_upid; in soflow_nstat_provider_request_vals()
986 desc->epid = so->e_pid; in soflow_nstat_provider_request_vals()
987 uuid_copy(desc->euuid, so->e_uuid); in soflow_nstat_provider_request_vals()
989 desc->eupid = so->last_upid; in soflow_nstat_provider_request_vals()
990 desc->epid = so->last_pid; in soflow_nstat_provider_request_vals()
991 uuid_copy(desc->euuid, so->last_uuid); in soflow_nstat_provider_request_vals()
994 uuid_copy(desc->vuuid, so->so_vuuid); in soflow_nstat_provider_request_vals()
1017 desc->ifnet_properties = (uint16_t)ifnet_to_flags(ifp, so); in soflow_nstat_provider_request_vals()
1020 desc->rcvbufsize = so->so_rcv.sb_hiwat; in soflow_nstat_provider_request_vals()
1021 desc->rcvbufused = so->so_rcv.sb_cc; in soflow_nstat_provider_request_vals()
1022 desc->traffic_class = so->so_traffic_class; in soflow_nstat_provider_request_vals()
1045 SOFLOW_LOG(LOG_DEBUG, so, hash_entry->soflow_debug, in soflow_nstat_provider_request_vals()
1068 …struct socket *so = (hash_entry && hash_entry->soflow_db) ? hash_entry->soflow_db->soflow_db_so : … in soflow_nstat_provider_request_extensions() local
1069 struct inpcb *inp = so ? sotoinpcb(so) : NULL; in soflow_nstat_provider_request_extensions()
1073 if (hash_entry == NULL || so == NULL || inp == NULL) { in soflow_nstat_provider_request_extensions()
1094 necp_copy_inp_domain_info(inp, so, domain_info); in soflow_nstat_provider_request_extensions()
1097 …SOFLOW_LOG(LOG_DEBUG, so, hash_entry->soflow_debug, "Collected NSTAT domain_info:pid %d domain <%s… in soflow_nstat_provider_request_extensions()
1099 so->so_flags & SOF_DELEGATED ? so->e_pid : so->last_pid, in soflow_nstat_provider_request_extensions()
1121 …struct socket *so = (hash_entry && hash_entry->soflow_db) ? hash_entry->soflow_db->soflow_db_so : … in soflow_update_flow_stats() local
1127 SOFLOW_ENTRY_LOG(LOG_DEBUG, so, hash_entry, hash_entry->soflow_debug, "Stats update - Outgoing"); in soflow_update_flow_stats()
1131 SOFLOW_ENTRY_LOG(LOG_DEBUG, so, hash_entry, hash_entry->soflow_debug, "Stats update - Incoming"); in soflow_update_flow_stats()
1137 soflow_get_flow(struct socket *so, struct sockaddr *local, struct sockaddr *remote, struct mbuf *co… in soflow_get_flow() argument
1141 struct inpcb *inp = sotoinpcb(so); in soflow_get_flow()
1148 socket_lock_assert_owned(so); in soflow_get_flow()
1150 if (so->so_flow_db != NULL) { in soflow_get_flow()
1153 if (os_ref_retain_try(&so->so_flow_db->soflow_db_ref_count) == false) { in soflow_get_flow()
1158 hash_entry = soflow_db_lookup_entry(so->so_flow_db, local, remote, false); in soflow_get_flow()
1161 hash_entry = soflow_db_lookup_entry(so->so_flow_db, local, remote, true); in soflow_get_flow()
1167 SOFLOW_DB_FREE(so->so_flow_db); in soflow_get_flow()
1173 …y_local_address_needs_update(hash_entry) || soflow_entry_local_port_needs_update(so, hash_entry)) { in soflow_get_flow()
1174 soflow_entry_update_local(so->so_flow_db, hash_entry, local, control, rcv_ifindex); in soflow_get_flow()
1181 SOFLOW_DB_FREE(so->so_flow_db); in soflow_get_flow()
1185 SOFLOW_DB_FREE(so->so_flow_db); in soflow_get_flow()
1193 if (so->so_flow_db == NULL) { in soflow_get_flow()
1195 if (soflow_db_init(so) != 0) { in soflow_get_flow()
1200 hash_entry = soflow_db_add_entry(so->so_flow_db, local, remote); in soflow_get_flow()
1202 SOFLOW_LOG(LOG_ERR, so, true, "Failed to add entry"); in soflow_get_flow()
1218 soflow_entry_update_local(so->so_flow_db, hash_entry, local, control, rcv_ifindex); in soflow_get_flow()
1226 …if (!soflow_nstat_disable && SOFLOW_IS_UDP(so) && !(so->so_state & (SS_ISCONNECTED | SS_ISCONNECTI… in soflow_get_flow()
1237 …SOFLOW_LOG(LOG_INFO, so, hash_entry->soflow_debug, "<Open nstat> - context %lX", (unsigned long)ha… in soflow_get_flow()
1255 SOFLOW_ENTRY_LOG(LOG_INFO, so, hash_entry, hash_entry->soflow_debug, "Added entry"); in soflow_get_flow()
1268 struct socket *so = NULL; in soflow_socket_safe_lock() local
1276 so = inp->inp_socket; in soflow_socket_safe_lock()
1277 socket_lock(so, 1); in soflow_socket_safe_lock()
1286 if (so) { in soflow_socket_safe_lock()
1287 socket_unlock(so, 1); in soflow_socket_safe_lock()
1293 soflow_validate_dgram_socket(struct socket *so) in soflow_validate_dgram_socket() argument
1302 if (inp->inp_state != INPCB_STATE_DEAD && inp->inp_socket == so) { in soflow_validate_dgram_socket()
1318 if (inp->inp_state != INPCB_STATE_DEAD && inp->inp_socket == so) { in soflow_validate_dgram_socket()
1365 …struct socket *so = (hash_entry && hash_entry->soflow_db) ? hash_entry->soflow_db->soflow_db_so : … in soflow_gc_idle_timed_out() local
1368 SOFLOW_ENTRY_LOG(LOG_INFO, so, hash_entry, hash_entry->soflow_debug, "GC Idle Timeout detected"); in soflow_gc_idle_timed_out()
1375 soflow_gc_cleanup(struct socket *so) in soflow_gc_cleanup() argument
1383 if (so == NULL || so->so_flow_db == NULL) { in soflow_gc_cleanup()
1386 db = so->so_flow_db; in soflow_gc_cleanup()
1393 socket_lock_assert_owned(so); in soflow_gc_cleanup()
1406 soflow_feat_gc_perform_func_ptr(so, entry); in soflow_gc_cleanup()
1413 SOFLOW_ENTRY_LOG(LOG_INFO, so, entry, entry->soflow_debug, "GC cleanup entry"); in soflow_gc_cleanup()
1433 struct socket *so = NULL; in soflow_gc_expire() local
1453 so = hash_entry->soflow_db ? hash_entry->soflow_db->soflow_db_so : NULL; in soflow_gc_expire()
1457 … (soflow_feat_gc_needed_func_ptr != NULL && soflow_feat_gc_needed_func_ptr(so, hash_entry, current… in soflow_gc_expire()
1460 if (so != NULL) { in soflow_gc_expire()
1463 if (socket_array[socket_count] == so) { in soflow_gc_expire()
1469 socket_array[socket_count] = so; in soflow_gc_expire()
1483 so = soflow_validate_dgram_socket(socket_array[i]); in soflow_gc_expire()
1484 if (so == NULL) { in soflow_gc_expire()
1487 cleaned_count += soflow_gc_cleanup(so); in soflow_gc_expire()
1488 socket_unlock(so, 1); in soflow_gc_expire()
1491 so = NULL; in soflow_gc_expire()
1492 SOFLOW_LOG(LOG_INFO, so, true, "<GC cleaned %d flows>", cleaned_count); in soflow_gc_expire()