Lines Matching refs:parsed_parameters
372 necp_find_matching_interface_index(struct necp_client_parsed_parameters *parsed_parameters,
380 struct necp_client_parsed_parameters *parsed_parameters,
2750 const struct necp_client_parsed_parameters *parsed_parameters, in necp_client_add_agent_interface_options() argument
2764 (void)necp_netagent_applies_to_client(client, parsed_parameters, &ifp->if_agentids[i], TRUE, in necp_client_add_agent_interface_options()
2773 const struct necp_client_parsed_parameters *parsed_parameters, in necp_client_add_browse_interface_options() argument
2792 necp_netagent_is_requested(parsed_parameters, &ifp->if_agentids[i]))) { in necp_client_add_browse_interface_options()
2932 …sed_parameters(struct necp_client *client, struct necp_client_parsed_parameters *parsed_parameters) in necp_client_trace_parsed_parameters() argument
2938 uuid_unparse_lower(parsed_parameters->effective_uuid, uuid_str); in necp_client_trace_parsed_parameters()
2940 switch (parsed_parameters->local_addr.sa.sa_family) { in necp_client_trace_parsed_parameters()
2942 if (parsed_parameters->local_addr.sa.sa_len == sizeof(struct sockaddr_in)) { in necp_client_trace_parsed_parameters()
2943 struct sockaddr_in *addr = &parsed_parameters->local_addr.sin; in necp_client_trace_parsed_parameters()
2948 if (parsed_parameters->local_addr.sa.sa_len == sizeof(struct sockaddr_in6)) { in necp_client_trace_parsed_parameters()
2949 struct sockaddr_in6 *addr6 = &parsed_parameters->local_addr.sin6; in necp_client_trace_parsed_parameters()
2957 switch (parsed_parameters->remote_addr.sa.sa_family) { in necp_client_trace_parsed_parameters()
2959 if (parsed_parameters->remote_addr.sa.sa_len == sizeof(struct sockaddr_in)) { in necp_client_trace_parsed_parameters()
2960 struct sockaddr_in *addr = &parsed_parameters->remote_addr.sin; in necp_client_trace_parsed_parameters()
2965 if (parsed_parameters->remote_addr.sa.sa_len == sizeof(struct sockaddr_in6)) { in necp_client_trace_parsed_parameters()
2966 struct sockaddr_in6 *addr6 = &parsed_parameters->remote_addr.sin6; in necp_client_trace_parsed_parameters()
2979 parsed_parameters->valid_fields, in necp_client_trace_parsed_parameters()
2980 parsed_parameters->flags, in necp_client_trace_parsed_parameters()
2981 parsed_parameters->extended_flags, in necp_client_trace_parsed_parameters()
2982 parsed_parameters->delegated_upid, in necp_client_trace_parsed_parameters()
2984 parsed_parameters->required_interface_index, in necp_client_trace_parsed_parameters()
2985 parsed_parameters->required_interface_type, in necp_client_trace_parsed_parameters()
2986 parsed_parameters->local_address_preference, in necp_client_trace_parsed_parameters()
2987 parsed_parameters->ip_protocol, in necp_client_trace_parsed_parameters()
2988 parsed_parameters->transport_protocol, in necp_client_trace_parsed_parameters()
2989 parsed_parameters->ethertype, in necp_client_trace_parsed_parameters()
2990 parsed_parameters->effective_pid, in necp_client_trace_parsed_parameters()
2992 parsed_parameters->uid, in necp_client_trace_parsed_parameters()
2993 parsed_parameters->persona_id, in necp_client_trace_parsed_parameters()
2994 parsed_parameters->traffic_class); in necp_client_trace_parsed_parameters()
2997 parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_KNOWN_TRACKER, in necp_client_trace_parsed_parameters()
2998 parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_NON_APP_INITIATED, in necp_client_trace_parsed_parameters()
2999 parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_SILENT, in necp_client_trace_parsed_parameters()
3000 parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_APPROVED_APP_DOMAIN); in necp_client_trace_parsed_parameters()
3002 …for (i = 0; i < NECP_MAX_INTERFACE_PARAMETERS && parsed_parameters->prohibited_interfaces[i][0]; i… in necp_client_trace_parsed_parameters()
3003 …NECP_CLIENT_PARAMS_LOG(client, "Parsed prohibited_interfaces[%d] <%s>", i, parsed_parameters->proh… in necp_client_trace_parsed_parameters()
3006 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && parsed_parameters->required_netagent_types[i].netagen… in necp_client_trace_parsed_parameters()
3008 parsed_parameters->required_netagent_types[i].netagent_domain, in necp_client_trace_parsed_parameters()
3009 parsed_parameters->required_netagent_types[i].netagent_type); in necp_client_trace_parsed_parameters()
3011 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && parsed_parameters->prohibited_netagent_types[i].netag… in necp_client_trace_parsed_parameters()
3013 parsed_parameters->prohibited_netagent_types[i].netagent_domain, in necp_client_trace_parsed_parameters()
3014 parsed_parameters->prohibited_netagent_types[i].netagent_type); in necp_client_trace_parsed_parameters()
3016 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && parsed_parameters->preferred_netagent_types[i].netage… in necp_client_trace_parsed_parameters()
3018 parsed_parameters->preferred_netagent_types[i].netagent_domain, in necp_client_trace_parsed_parameters()
3019 parsed_parameters->preferred_netagent_types[i].netagent_type); in necp_client_trace_parsed_parameters()
3021 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && parsed_parameters->avoided_netagent_types[i].netagent… in necp_client_trace_parsed_parameters()
3023 parsed_parameters->avoided_netagent_types[i].netagent_domain, in necp_client_trace_parsed_parameters()
3024 parsed_parameters->avoided_netagent_types[i].netagent_type); in necp_client_trace_parsed_parameters()
3027 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && !uuid_is_null(parsed_parameters->required_netagents[i… in necp_client_trace_parsed_parameters()
3028 uuid_unparse_lower(parsed_parameters->required_netagents[i], uuid_str); in necp_client_trace_parsed_parameters()
3031 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && !uuid_is_null(parsed_parameters->prohibited_netagents… in necp_client_trace_parsed_parameters()
3032 uuid_unparse_lower(parsed_parameters->prohibited_netagents[i], uuid_str); in necp_client_trace_parsed_parameters()
3035 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && !uuid_is_null(parsed_parameters->preferred_netagents[… in necp_client_trace_parsed_parameters()
3036 uuid_unparse_lower(parsed_parameters->preferred_netagents[i], uuid_str); in necp_client_trace_parsed_parameters()
3039 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && !uuid_is_null(parsed_parameters->avoided_netagents[i]… in necp_client_trace_parsed_parameters()
3040 uuid_unparse_lower(parsed_parameters->avoided_netagents[i], uuid_str); in necp_client_trace_parsed_parameters()
3063 struct necp_client_parsed_parameters *parsed_parameters) in necp_client_parse_parameters() argument
3084 if (parsed_parameters == NULL) { in necp_client_parse_parameters()
3088 memset(parsed_parameters, 0, sizeof(struct necp_client_parsed_parameters)); in necp_client_parse_parameters()
3111 parsed_parameters->required_interface_index = bound_interface->if_index; in necp_client_parse_parameters()
3112 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IF; in necp_client_parse_parameters()
3122 parsed_parameters->local_addr.sin6 = address_struct->address.sin6; in necp_client_parse_parameters()
3123 if (!necp_address_is_wildcard(&parsed_parameters->local_addr)) { in necp_client_parse_parameters()
3124 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_LOCAL_ADDR; in necp_client_parse_parameters()
3126 …if ((parsed_parameters->local_addr.sa.sa_family == AF_INET && parsed_parameters->local_addr.sin.si… in necp_client_parse_parameters()
3127 …(parsed_parameters->local_addr.sa.sa_family == AF_INET6 && parsed_parameters->local_addr.sin6.sin6… in necp_client_parse_parameters()
3128 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_LOCAL_PORT; in necp_client_parse_parameters()
3138 parsed_parameters->local_addr.sin6 = endpoint->u.sin6; in necp_client_parse_parameters()
3139 if (!necp_address_is_wildcard(&parsed_parameters->local_addr)) { in necp_client_parse_parameters()
3140 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_LOCAL_ADDR; in necp_client_parse_parameters()
3142 …if ((parsed_parameters->local_addr.sa.sa_family == AF_INET && parsed_parameters->local_addr.sin.si… in necp_client_parse_parameters()
3143 …(parsed_parameters->local_addr.sa.sa_family == AF_INET6 && parsed_parameters->local_addr.sin6.sin6… in necp_client_parse_parameters()
3144 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_LOCAL_PORT; in necp_client_parse_parameters()
3154 parsed_parameters->remote_addr.sin6 = address_struct->address.sin6; in necp_client_parse_parameters()
3155 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REMOTE_ADDR; in necp_client_parse_parameters()
3164 parsed_parameters->remote_addr.sin6 = endpoint->u.sin6; in necp_client_parse_parameters()
3165 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REMOTE_ADDR; in necp_client_parse_parameters()
3175 memcpy(parsed_parameters->prohibited_interfaces[num_prohibited_interfaces], value, length); in necp_client_parse_parameters()
3176 …parsed_parameters->prohibited_interfaces[num_prohibited_interfaces][length - 1] = 0; // Ma… in necp_client_parse_parameters()
3178 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_IF; in necp_client_parse_parameters()
3183 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IFTYPE) { in necp_client_parse_parameters()
3187 memcpy(&parsed_parameters->required_interface_type, value, sizeof(u_int8_t)); in necp_client_parse_parameters()
3188 if (parsed_parameters->required_interface_type) { in necp_client_parse_parameters()
3189 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IFTYPE; in necp_client_parse_parameters()
3199 …memcpy(&parsed_parameters->prohibited_interface_types[num_prohibited_interface_types], value, size… in necp_client_parse_parameters()
3201 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_IFTYPE; in necp_client_parse_parameters()
3210 memcpy(&parsed_parameters->required_netagents[num_required_agents], value, sizeof(uuid_t)); in necp_client_parse_parameters()
3212 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT; in necp_client_parse_parameters()
3221 … memcpy(&parsed_parameters->prohibited_netagents[num_prohibited_agents], value, sizeof(uuid_t)); in necp_client_parse_parameters()
3223 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_AGENT; in necp_client_parse_parameters()
3232 memcpy(&parsed_parameters->preferred_netagents[num_preferred_agents], value, sizeof(uuid_t)); in necp_client_parse_parameters()
3234 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PREFERRED_AGENT; in necp_client_parse_parameters()
3243 memcpy(&parsed_parameters->avoided_netagents[num_avoided_agents], value, sizeof(uuid_t)); in necp_client_parse_parameters()
3245 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_AVOIDED_AGENT; in necp_client_parse_parameters()
3254 …memcpy(&parsed_parameters->required_netagent_types[num_required_agent_types], value, sizeof(struct… in necp_client_parse_parameters()
3256 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT_TYPE; in necp_client_parse_parameters()
3265 …memcpy(&parsed_parameters->prohibited_netagent_types[num_prohibited_agent_types], value, sizeof(st… in necp_client_parse_parameters()
3267 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_AGENT_TYPE; in necp_client_parse_parameters()
3276 …memcpy(&parsed_parameters->preferred_netagent_types[num_preferred_agent_types], value, sizeof(stru… in necp_client_parse_parameters()
3278 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PREFERRED_AGENT_TYPE; in necp_client_parse_parameters()
3287 …memcpy(&parsed_parameters->avoided_netagent_types[num_avoided_agent_types], value, sizeof(struct n… in necp_client_parse_parameters()
3289 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_AVOIDED_AGENT_TYPE; in necp_client_parse_parameters()
3295 memcpy(&parsed_parameters->flags, value, sizeof(parsed_parameters->flags)); in necp_client_parse_parameters()
3296 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_FLAGS; in necp_client_parse_parameters()
3304 parsed_parameters->ip_protocol = (u_int8_t)large_ip_protocol; in necp_client_parse_parameters()
3305 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_IP_PROTOCOL; in necp_client_parse_parameters()
3306 } else if (length >= sizeof(parsed_parameters->ip_protocol)) { in necp_client_parse_parameters()
3307 memcpy(&parsed_parameters->ip_protocol, value, sizeof(parsed_parameters->ip_protocol)); in necp_client_parse_parameters()
3308 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_IP_PROTOCOL; in necp_client_parse_parameters()
3313 if (length >= sizeof(parsed_parameters->transport_protocol)) { in necp_client_parse_parameters()
3314 …memcpy(&parsed_parameters->transport_protocol, value, sizeof(parsed_parameters->transport_protocol… in necp_client_parse_parameters()
3315 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_TRANSPORT_PROTOCOL; in necp_client_parse_parameters()
3320 if (length >= sizeof(parsed_parameters->effective_pid)) { in necp_client_parse_parameters()
3321 memcpy(&parsed_parameters->effective_pid, value, sizeof(parsed_parameters->effective_pid)); in necp_client_parse_parameters()
3322 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_EFFECTIVE_PID; in necp_client_parse_parameters()
3327 if (length >= sizeof(parsed_parameters->delegated_upid)) { in necp_client_parse_parameters()
3328 memcpy(&parsed_parameters->delegated_upid, value, sizeof(parsed_parameters->delegated_upid)); in necp_client_parse_parameters()
3329 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_DELEGATED_UPID; in necp_client_parse_parameters()
3334 if (length >= sizeof(parsed_parameters->ethertype)) { in necp_client_parse_parameters()
3335 memcpy(&parsed_parameters->ethertype, value, sizeof(parsed_parameters->ethertype)); in necp_client_parse_parameters()
3336 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_ETHERTYPE; in necp_client_parse_parameters()
3341 if (length >= sizeof(parsed_parameters->effective_uuid)) { in necp_client_parse_parameters()
3342 memcpy(&parsed_parameters->effective_uuid, value, sizeof(parsed_parameters->effective_uuid)); in necp_client_parse_parameters()
3343 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_EFFECTIVE_UUID; in necp_client_parse_parameters()
3348 if (length >= sizeof(parsed_parameters->traffic_class)) { in necp_client_parse_parameters()
3349 memcpy(&parsed_parameters->traffic_class, value, sizeof(parsed_parameters->traffic_class)); in necp_client_parse_parameters()
3350 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_TRAFFIC_CLASS; in necp_client_parse_parameters()
3377 memcpy(&parsed_parameters->parent_uuid, value, sizeof(parsed_parameters->parent_uuid)); in necp_client_parse_parameters()
3378 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PARENT_UUID; in necp_client_parse_parameters()
3383 if (length >= sizeof(parsed_parameters->local_address_preference)) { in necp_client_parse_parameters()
3384 …memcpy(&parsed_parameters->local_address_preference, value, sizeof(parsed_parameters->local_addres… in necp_client_parse_parameters()
3385 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_LOCAL_ADDR_PREFERENCE; in necp_client_parse_parameters()
3391 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_ATTRIBUTED_BUNDLE_IDENTIFIER; in necp_client_parse_parameters()
3396 if (parsed_parameters->demux_pattern_count >= NECP_MAX_DEMUX_PATTERNS) { in necp_client_parse_parameters()
3400 …memcpy(&parsed_parameters->demux_patterns[parsed_parameters->demux_pattern_count], value, sizeof(s… in necp_client_parse_parameters()
3401 parsed_parameters->demux_pattern_count++; in necp_client_parse_parameters()
3402 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_FLOW_DEMUX_PATTERN; in necp_client_parse_parameters()
3410 parsed_parameters->uid = application_id->uid; in necp_client_parse_parameters()
3411 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_UID; in necp_client_parse_parameters()
3413 uuid_copy(parsed_parameters->effective_uuid, application_id->effective_uuid); in necp_client_parse_parameters()
3414 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_EFFECTIVE_UUID; in necp_client_parse_parameters()
3416 parsed_parameters->persona_id = application_id->persona_id; in necp_client_parse_parameters()
3417 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PERSONA_ID; in necp_client_parse_parameters()
3423 memcpy(&parsed_parameters->extended_flags, value, sizeof(parsed_parameters->extended_flags)); in necp_client_parse_parameters()
3424 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_EXTENDED_FLAGS; in necp_client_parse_parameters()
3480 …} else if (answer_struct->address_answer.sa.sa_family != parsed_parameters->remote_addr.sa.sa_fami… in necp_client_parse_parameters()
3481 answer_struct->address_answer.sa.sa_len != parsed_parameters->remote_addr.sa.sa_len) { in necp_client_parse_parameters()
3485 … answer_struct->address_answer.sin.sin_port != parsed_parameters->remote_addr.sin.sin_port) { in necp_client_parse_parameters()
3489 …answer_struct->address_answer.sin.sin_addr.s_addr != parsed_parameters->remote_addr.sin.sin_addr.s… in necp_client_parse_parameters()
3491 …memcmp(&sin6.sin6_addr, &parsed_parameters->remote_addr.sin6.sin6_addr, sizeof(struct in6_addr)) !… in necp_client_parse_parameters()
3549 necp_client_trace_parsed_parameters(client, parsed_parameters); in necp_client_parse_parameters()
4232 struct necp_client_parsed_parameters * __single parsed_parameters = NULL; in necp_socket_is_allowed_to_recv_on_interface() local
4234 parsed_parameters = kalloc_type(struct necp_client_parsed_parameters, in necp_socket_is_allowed_to_recv_on_interface()
4236 …se_parameters(client, client->parameters, (u_int32_t)client->parameters_length, parsed_parameters); in necp_socket_is_allowed_to_recv_on_interface()
4238 if (!necp_ifnet_matches_parameters(interface, parsed_parameters, 0, NULL, true, false)) { in necp_socket_is_allowed_to_recv_on_interface()
4242 kfree_type(struct necp_client_parsed_parameters, parsed_parameters); in necp_socket_is_allowed_to_recv_on_interface()
4496 necp_update_parsed_parameters(struct necp_client_parsed_parameters *parsed_parameters, in necp_update_parsed_parameters() argument
4499 if (parsed_parameters == NULL || in necp_update_parsed_parameters()
4517 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT) { in necp_update_parsed_parameters()
4520 if (uuid_compare(parsed_parameters->required_netagents[j], result->netagents[i]) == 0) { in necp_update_parsed_parameters()
4524 if (uuid_is_null(parsed_parameters->required_netagents[j])) { in necp_update_parsed_parameters()
4526 memcpy(&parsed_parameters->required_netagents[j], result->netagents[i], sizeof(uuid_t)); in necp_update_parsed_parameters()
4533 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT; in necp_update_parsed_parameters()
4534 memcpy(&parsed_parameters->required_netagents[0], result->netagents[i], sizeof(uuid_t)); in necp_update_parsed_parameters()
4539 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT_TYPE) { in necp_update_parsed_parameters()
4544 …if (strbuflen(parsed_parameters->required_netagent_types[j].netagent_domain, sizeof(parsed_paramet… in necp_update_parsed_parameters()
4545 …strbuflen(parsed_parameters->required_netagent_types[j].netagent_type, sizeof(parsed_parameters->r… in necp_update_parsed_parameters()
4549 …if (strbufcmp(parsed_parameters->required_netagent_types[j].netagent_domain, sizeof(parsed_paramet… in necp_update_parsed_parameters()
4550 …strbufcmp(parsed_parameters->required_netagent_types[j].netagent_type, sizeof(parsed_parameters->r… in necp_update_parsed_parameters()
4555 …memset(&parsed_parameters->required_netagent_types[NECP_MAX_AGENT_PARAMETERS - 1], 0, sizeof(struc… in necp_update_parsed_parameters()
4559 memmove(&parsed_parameters->required_netagent_types[j], in necp_update_parsed_parameters()
4560 &parsed_parameters->required_netagent_types[j + 1], in necp_update_parsed_parameters()
4562 …memset(&parsed_parameters->required_netagent_types[NECP_MAX_AGENT_PARAMETERS - 1], 0, sizeof(struc… in necp_update_parsed_parameters()
4576 parsed_parameters->required_interface_index != IFSCOPE_NONE && in necp_update_parsed_parameters()
4577 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IF) == 0) { in necp_update_parsed_parameters()
4579 parsed_parameters->required_interface_index = IFSCOPE_NONE; in necp_update_parsed_parameters()
4599 struct necp_client_parsed_parameters *parsed_parameters, in necp_calculate_client_result() argument
4612 if (necp_find_matching_interface_index(parsed_parameters, &matching_if_index, &validate_agents)) { in necp_calculate_client_result()
4614 parsed_parameters->required_interface_index = matching_if_index; in necp_calculate_client_result()
4634 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT) { in necp_calculate_client_result()
4636 if (uuid_is_null(parsed_parameters->required_netagents[i])) { in necp_calculate_client_result()
4651 if (uuid_compare(parsed_parameters->required_netagents[i], result->netagents[j]) == 0) { in necp_calculate_client_result()
4664 …if (!requirement_failed && parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED… in necp_calculate_client_result()
4666 …if (strbuflen(parsed_parameters->required_netagent_types[i].netagent_domain, sizeof(parsed_paramet… in necp_calculate_client_result()
4667 …strbuflen(parsed_parameters->required_netagent_types[i].netagent_type, sizeof(parsed_parameters->r… in necp_calculate_client_result()
4686 if (necp_agent_types_match(parsed_parameters->required_netagent_types[i].netagent_domain, in necp_calculate_client_result()
4687 parsed_parameters->required_netagent_types[i].netagent_type, in necp_calculate_client_result()
4764 struct necp_client_parsed_parameters * __single parsed_parameters = NULL; in necp_update_client_result() local
4770 parsed_parameters = kalloc_type(struct necp_client_parsed_parameters, in necp_update_client_result()
4776 …se_parameters(client, client->parameters, (u_int32_t)client->parameters_length, parsed_parameters); in necp_update_client_result()
4778 kfree_type(struct necp_client_parsed_parameters, parsed_parameters); in necp_update_client_result()
4781 bool originally_scoped = (parsed_parameters->required_interface_index != IFSCOPE_NONE); in necp_update_client_result()
4784 client->ip_protocol = parsed_parameters->ip_protocol; in necp_update_client_result()
4791 …if (!necp_calculate_client_result(proc, client, parsed_parameters, &result, &flags, &reason, &v4_g… in necp_update_client_result()
4792 kfree_type(struct necp_client_parsed_parameters, parsed_parameters); in necp_update_client_result()
4796 if (necp_update_parsed_parameters(parsed_parameters, &result)) { in necp_update_client_result()
4798 …if (!necp_calculate_client_result(proc, client, parsed_parameters, &result, &flags, &reason, &v4_g… in necp_update_client_result()
4799 kfree_type(struct necp_client_parsed_parameters, parsed_parameters); in necp_update_client_result()
4804 if ((parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER) && in necp_update_client_result()
4805 parsed_parameters->required_interface_index != IFSCOPE_NONE && in necp_update_client_result()
4806 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IF) == 0) { in necp_update_client_result()
4808 parsed_parameters->required_interface_index = IFSCOPE_NONE; in necp_update_client_result()
4816 if ((parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_MULTIPATH) || in necp_update_client_result()
4817 (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_BROWSE) || in necp_update_client_result()
4818 ((parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER) && in necp_update_client_result()
4829 parsed_parameters->required_interface_index == result.routed_interface_index) { in necp_update_client_result()
4845 if (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER) { in necp_update_client_result()
4883 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_REQUIRED_FIELDS) && in necp_update_client_result()
4884 parsed_parameters->required_interface_index != IFSCOPE_NONE && in necp_update_client_result()
4885 parsed_parameters->required_interface_index != result.routed_interface_index) { in necp_update_client_result()
4886 routed_interface_index = parsed_parameters->required_interface_index; in necp_update_client_result()
4932 bool has_remote_addr = parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REMOTE_ADDR; in necp_update_client_result()
5003 …if (necp_netagent_applies_to_client(client, parsed_parameters, &netagent.netagent_uuid, TRUE, 0, 0… in necp_update_client_result()
5016 } else if (parsed_parameters->required_interface_index != IFSCOPE_NONE && in necp_update_client_result()
5017 parsed_parameters->required_interface_index <= (u_int32_t)if_index) { in necp_update_client_result()
5019 direct_interface = ifindex2ifnet[parsed_parameters->required_interface_index]; in necp_update_client_result()
5029 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_REQUIRED_FIELDS) && in necp_update_client_result()
5030 parsed_parameters->required_interface_index != IFSCOPE_NONE && in necp_update_client_result()
5031 …parsed_parameters->required_interface_index != result.routing_result_parameter.tunnel_interface_in… in necp_update_client_result()
5032 parsed_parameters->required_interface_index <= (u_int32_t)if_index) { in necp_update_client_result()
5033 original_scoped_interface = ifindex2ifnet[parsed_parameters->required_interface_index]; in necp_update_client_result()
5069 …if (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_MULTIPATH && !(parsed_parameters->flags … in necp_update_client_result()
5073 necp_client_add_agent_interface_options(client, parsed_parameters, direct_interface); in necp_update_client_result()
5079 if (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_INBOUND) { in necp_update_client_result()
5084 necp_ifnet_matches_parameters(multi_interface, parsed_parameters, 0, NULL, true, false)) { in necp_update_client_result()
5086 necp_client_add_agent_interface_options(client, parsed_parameters, multi_interface); in necp_update_client_result()
5094 necp_ifnet_matches_parameters(multi_interface, parsed_parameters, 0, NULL, true, false)) { in necp_update_client_result()
5096 necp_client_add_agent_interface_options(client, parsed_parameters, multi_interface); in necp_update_client_result()
5104 } else if (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER) { in necp_update_client_result()
5109 necp_client_add_agent_interface_options(client, parsed_parameters, direct_interface); in necp_update_client_result()
5120 necp_ifnet_matches_parameters(listen_interface, parsed_parameters, 0, NULL, true, false)) { in necp_update_client_result()
5122 necp_client_add_agent_interface_options(client, parsed_parameters, listen_interface); in necp_update_client_result()
5126 } else if (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_BROWSE) { in necp_update_client_result()
5130 necp_client_add_browse_interface_options(client, parsed_parameters, direct_interface); in necp_update_client_result()
5136 if (necp_ifnet_matches_parameters(browse_interface, parsed_parameters, 0, NULL, true, false)) { in necp_update_client_result()
5137 necp_client_add_browse_interface_options(client, parsed_parameters, browse_interface); in necp_update_client_result()
5178 if (necp_netagent_applies_to_client(client, parsed_parameters, &netagent.netagent_uuid, FALSE, in necp_update_client_result()
5217 if (necp_netagent_applies_to_client(client, parsed_parameters, &netagent.netagent_uuid, TRUE, in necp_update_client_result()
5258 if (necp_netagent_applies_to_client(client, parsed_parameters, &netagent.netagent_uuid, FALSE, in necp_update_client_result()
5303 kfree_type(struct necp_client_parsed_parameters, parsed_parameters); in necp_update_client_result()
5941 struct necp_client_parsed_parameters *parsed_parameters, in necp_ifnet_matches_parameters() argument
5953 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IF) { in necp_ifnet_matches_parameters()
5954 if (parsed_parameters->required_interface_index != ifp->if_index) { in necp_ifnet_matches_parameters()
5966 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_LOCAL_ADDR) { in necp_ifnet_matches_parameters()
5967 if (!necp_ifnet_matches_local_address(ifp, SA(&parsed_parameters->local_addr.sa))) { in necp_ifnet_matches_parameters()
5975 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) { in necp_ifnet_matches_parameters()
5990 if ((parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_PROHIBIT_EXPENSIVE) && in necp_ifnet_matches_parameters()
5994 if ((parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_PROHIBIT_CONSTRAINED) && in necp_ifnet_matches_parameters()
5998 if (!(parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_ALLOW_ULTRA_CONSTRAINED) && in necp_ifnet_matches_parameters()
6006 …!(parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) || // or if there are… in necp_ifnet_matches_parameters()
6007 …!(parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_ONLY_PRIMARY_REQUIRES_TYPE)) && // or… in necp_ifnet_matches_parameters()
6008 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IFTYPE) && in necp_ifnet_matches_parameters()
6009 !necp_ifnet_matches_type(ifp, parsed_parameters->required_interface_type, FALSE)) { in necp_ifnet_matches_parameters()
6013 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IFTYPE) { in necp_ifnet_matches_parameters()
6019 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_IFTYPE) { in necp_ifnet_matches_parameters()
6021 if (parsed_parameters->prohibited_interface_types[i] == 0) { in necp_ifnet_matches_parameters()
6025 if (necp_ifnet_matches_type(ifp, parsed_parameters->prohibited_interface_types[i], TRUE)) { in necp_ifnet_matches_parameters()
6031 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_IF) { in necp_ifnet_matches_parameters()
6033 …if (strbuflen(parsed_parameters->prohibited_interfaces[i], sizeof(parsed_parameters->prohibited_in… in necp_ifnet_matches_parameters()
6037 if (necp_ifnet_matches_name(ifp, parsed_parameters->prohibited_interfaces[i], TRUE)) { in necp_ifnet_matches_parameters()
6043 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT) { in necp_ifnet_matches_parameters()
6045 if (uuid_is_null(parsed_parameters->required_netagents[i])) { in necp_ifnet_matches_parameters()
6049 if (!necp_ifnet_matches_agent(ifp, &parsed_parameters->required_netagents[i], FALSE)) { in necp_ifnet_matches_parameters()
6059 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_AGENT) { in necp_ifnet_matches_parameters()
6061 if (uuid_is_null(parsed_parameters->prohibited_netagents[i])) { in necp_ifnet_matches_parameters()
6065 if (necp_ifnet_matches_agent(ifp, &parsed_parameters->prohibited_netagents[i], TRUE)) { in necp_ifnet_matches_parameters()
6071 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT_TYPE) { in necp_ifnet_matches_parameters()
6073 …if (strbuflen(parsed_parameters->required_netagent_types[i].netagent_domain, sizeof(parsed_paramet… in necp_ifnet_matches_parameters()
6074 …strbuflen(parsed_parameters->required_netagent_types[i].netagent_type, sizeof(parsed_parameters->r… in necp_ifnet_matches_parameters()
6078 …!necp_ifnet_matches_agent_type(ifp, parsed_parameters->required_netagent_types[i].netagent_domain,… in necp_ifnet_matches_parameters()
6088 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_AGENT_TYPE) { in necp_ifnet_matches_parameters()
6090 …if (strbuflen(parsed_parameters->prohibited_netagent_types[i].netagent_domain, sizeof(parsed_param… in necp_ifnet_matches_parameters()
6091 …strbuflen(parsed_parameters->prohibited_netagent_types[i].netagent_type, sizeof(parsed_parameters-… in necp_ifnet_matches_parameters()
6095 …necp_ifnet_matches_agent_type(ifp, parsed_parameters->prohibited_netagent_types[i].netagent_domain… in necp_ifnet_matches_parameters()
6103 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_PREFERRED_AGENT) { in necp_ifnet_matches_parameters()
6105 if (uuid_is_null(parsed_parameters->preferred_netagents[i])) { in necp_ifnet_matches_parameters()
6109 if (necp_ifnet_matches_agent(ifp, &parsed_parameters->preferred_netagents[i], TRUE)) { in necp_ifnet_matches_parameters()
6118 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_PREFERRED_AGENT_TYPE) { in necp_ifnet_matches_parameters()
6120 …if (strbuflen(parsed_parameters->preferred_netagent_types[i].netagent_domain, sizeof(parsed_parame… in necp_ifnet_matches_parameters()
6121 …strbuflen(parsed_parameters->preferred_netagent_types[i].netagent_type, sizeof(parsed_parameters->… in necp_ifnet_matches_parameters()
6125 …(necp_ifnet_matches_agent_type(ifp, parsed_parameters->preferred_netagent_types[i].netagent_domain… in necp_ifnet_matches_parameters()
6134 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_AVOIDED_AGENT) { in necp_ifnet_matches_parameters()
6136 if (uuid_is_null(parsed_parameters->avoided_netagents[i])) { in necp_ifnet_matches_parameters()
6140 if (!necp_ifnet_matches_agent(ifp, &parsed_parameters->avoided_netagents[i], TRUE)) { in necp_ifnet_matches_parameters()
6146 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_AVOIDED_AGENT_TYPE) { in necp_ifnet_matches_parameters()
6148 …if (strbuflen(parsed_parameters->avoided_netagent_types[i].netagent_domain, sizeof(parsed_paramete… in necp_ifnet_matches_parameters()
6149 …strbuflen(parsed_parameters->avoided_netagent_types[i].netagent_type, sizeof(parsed_parameters->av… in necp_ifnet_matches_parameters()
6153 …if (!necp_ifnet_matches_agent_type(ifp, parsed_parameters->avoided_netagent_types[i].netagent_doma… in necp_ifnet_matches_parameters()
6154 parsed_parameters->avoided_netagent_types[i].netagent_type, TRUE)) { in necp_ifnet_matches_parameters()
6169 necp_find_matching_interface_index(struct necp_client_parsed_parameters *parsed_parameters, in necp_find_matching_interface_index() argument
6177 if (parsed_parameters->required_interface_index != 0) { in necp_find_matching_interface_index()
6178 *return_ifindex = parsed_parameters->required_interface_index; in necp_find_matching_interface_index()
6185 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) { in necp_find_matching_interface_index()
6186 flags = parsed_parameters->flags; in necp_find_matching_interface_index()
6187 has_prohibit_flags = (parsed_parameters->flags & in necp_find_matching_interface_index()
6192 if (!(parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_INTERESTING_IFNET_FIELDS) && in necp_find_matching_interface_index()
6197 has_preferred_fields = (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_PREFERRED_FIELDS); in necp_find_matching_interface_index()
6202 if (!(parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_SCOPED_FIELDS) && in necp_find_matching_interface_index()
6207 if (ifp == NULL || necp_ifnet_matches_parameters(ifp, parsed_parameters, 0, NULL, false, false)) { in necp_find_matching_interface_index()
6213 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REMOTE_ADDR && in necp_find_matching_interface_index()
6214 parsed_parameters->remote_addr.sin6.sin6_family == AF_INET6 && in necp_find_matching_interface_index()
6215 parsed_parameters->remote_addr.sin6.sin6_scope_id != IFSCOPE_NONE && in necp_find_matching_interface_index()
6216 parsed_parameters->remote_addr.sin6.sin6_scope_id <= (u_int32_t)if_index) { in necp_find_matching_interface_index()
6217 ifp = ifindex2ifnet[parsed_parameters->remote_addr.sin6.sin6_scope_id]; in necp_find_matching_interface_index()
6218 … if (ifp != NULL && necp_ifnet_matches_parameters(ifp, parsed_parameters, 0, NULL, false, false)) { in necp_find_matching_interface_index()
6230 …if (necp_ifnet_matches_parameters(ifp, parsed_parameters, flags, &preferred_count, false, false)) { in necp_find_matching_interface_index()
6253 bool is_listener = ((parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) && in necp_find_matching_interface_index()
6254 (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER)); in necp_find_matching_interface_index()
6257 if ((parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_SCOPED_FIELDS) && in necp_find_matching_interface_index()
6258 ((!(parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IFTYPE)) || in necp_find_matching_interface_index()
6259 …necp_interface_type_should_match_unranked_interfaces(parsed_parameters->required_interface_type) || in necp_find_matching_interface_index()
6260 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_LOCAL_ADDR) || in necp_find_matching_interface_index()
6269 … if (necp_ifnet_matches_parameters(ifp, parsed_parameters, flags, &preferred_count, false, true)) { in necp_find_matching_interface_index()
6287 …((parsed_parameters->valid_fields & (NECP_PARSED_PARAMETERS_SCOPED_FIELDS | NECP_PARSED_PARAMETERS… in necp_find_matching_interface_index()
6288 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_PREFERRED_FIELDS))) { in necp_find_matching_interface_index()
6295 !(parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_SCOPED_IFNET_FIELDS)) { in necp_find_matching_interface_index()
7887 struct necp_client_parsed_parameters parsed_parameters = {}; in necp_client_add() local
7888 …e_parameters(client, client->parameters, (u_int32_t)client->parameters_length, &parsed_parameters); in necp_client_add()
7891 ((parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_DELEGATED_UPID) || in necp_client_add()
7892 … (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_ATTRIBUTED_BUNDLE_IDENTIFIER))) { in necp_client_add()
7895 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_DELEGATED_UPID) { in necp_client_add()
7899 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_ATTRIBUTED_BUNDLE_IDENTIFIER) { in necp_client_add()
7907 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_DELEGATED_UPID) { in necp_client_add()
7909 client->delegated_upid = parsed_parameters.delegated_upid; in necp_client_add()
7913 if (parse_error == 0 && parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_INTERPOSE) { in necp_client_add()
7923 if (parse_error == 0 && (parsed_parameters.flags & in necp_client_add()
7934 …if (parse_error == 0 && (parsed_parameters.extended_flags & NECP_CLIENT_PARAMETER_EXTENDED_FLAG_AO… in necp_client_add()
7943 if ((parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_MULTIPATH) || in necp_client_add()
7944 (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_BROWSE) || in necp_client_add()
7945 (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER)) { in necp_client_add()
7952 if (parse_error == 0 && parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER && in necp_client_add()
7953 … (parsed_parameters.ip_protocol == IPPROTO_TCP || parsed_parameters.ip_protocol == IPPROTO_UDP)) { in necp_client_add()
7959 flow_info.nfi_protocol = parsed_parameters.ip_protocol; in necp_client_add()
7961 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_EFFECTIVE_PID) { in necp_client_add()
7962 flow_info.nfi_effective_pid = parsed_parameters.effective_pid; in necp_client_add()
7969 if (parsed_parameters.local_addr.sa.sa_family == AF_UNSPEC) { in necp_client_add()
7972 parsed_parameters.local_addr.sin6.sin6_family = AF_INET6; in necp_client_add()
7973 parsed_parameters.local_addr.sin6.sin6_len = sizeof(struct sockaddr_in6); in necp_client_add()
7976 switch (parsed_parameters.local_addr.sa.sa_family) { in necp_client_add()
7978 …memcpy(&flow_info.nfi_laddr, &parsed_parameters.local_addr.sa, parsed_parameters.local_addr.sa.sa_… in necp_client_add()
7979 netns_addr = (uint32_t *)&parsed_parameters.local_addr.sin.sin_addr; in necp_client_add()
7984 …memcpy(&flow_info.nfi_laddr.sin6, &parsed_parameters.local_addr.sin6, parsed_parameters.local_addr… in necp_client_add()
7985 netns_addr = (uint32_t *)&parsed_parameters.local_addr.sin6.sin6_addr; in necp_client_add()
7991 …NECPLOG(LOG_ERR, "necp_client_add listener invalid address family (%d)", parsed_parameters.local_a… in necp_client_add()
7996 if ((parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) && in necp_client_add()
7997 (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_REUSE_LOCAL)) { in necp_client_add()
8000 if (parsed_parameters.local_addr.sin.sin_port == 0) { in necp_client_add()
8001 …rve_ephemeral(&client->port_reservation, netns_addr, netns_addr_len, parsed_parameters.ip_protocol, in necp_client_add()
8002 &parsed_parameters.local_addr.sin.sin_port, netns_flags, &flow_info); in necp_client_add()
8009 …arameters(client->parameters, (u_int32_t)client->parameters_length, parsed_parameters.local_addr.s… in necp_client_add()
8011 …error = netns_reserve(&client->port_reservation, netns_addr, netns_addr_len, parsed_parameters.ip_… in necp_client_add()
8012 parsed_parameters.local_addr.sin.sin_port, netns_flags, &flow_info); in necp_client_add()
8025 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_PARENT_UUID) { in necp_client_add()
8030 parent = necp_client_fd_find_client_unlocked(fd_data, parsed_parameters.parent_uuid); in necp_client_add()
8034 uuid_copy(parent_client_id, parsed_parameters.parent_uuid); in necp_client_add()
8045 …if (parse_error == 0 && parent != NULL && parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_… in necp_client_add()
8047 if (parsed_parameters.demux_patterns[0].len == 0) { in necp_client_add()
8061 if (parsed_parameters.ip_protocol != IPPROTO_UDP) { in necp_client_add()
8063 parsed_parameters.ip_protocol); in necp_client_add()
8066 if (parsed_parameters.ip_protocol != parent_parameters.ip_protocol) { in necp_client_add()
8070 …if (parsed_parameters.local_addr.sa.sa_family != AF_INET && parsed_parameters.local_addr.sa.sa_fam… in necp_client_add()
8072 parsed_parameters.local_addr.sa.sa_family); in necp_client_add()
8075 if (parsed_parameters.local_addr.sa.sa_family != parsed_parameters.remote_addr.sa.sa_family) { in necp_client_add()
8079 if (parsed_parameters.local_addr.sa.sa_family != parent_parameters.local_addr.sa.sa_family) { in necp_client_add()
8083 …if (SOCKADDR_CMP(&parsed_parameters.local_addr.sa, &parent_parameters.local_addr.sa, parsed_parame… in necp_client_add()
8087 …if (SOCKADDR_CMP(&parsed_parameters.remote_addr.sa, &parent_parameters.remote_addr.sa, parsed_para… in necp_client_add()
8091 if (parsed_parameters.local_addr.sin.sin_port != parent_parameters.local_addr.sin.sin_port) { in necp_client_add()
8095 if (parsed_parameters.remote_addr.sin.sin_port != parent_parameters.remote_addr.sin.sin_port) { in necp_client_add()
8409 struct necp_client_parsed_parameters parsed_parameters; in necp_client_check_tcp_heuristics() local
8414 &parsed_parameters); in necp_client_check_tcp_heuristics()
8436 if ((parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_ECN_ENABLE) == in necp_client_check_tcp_heuristics()
8442 if ((parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_ECN_DISABLE) == in necp_client_check_tcp_heuristics()
8459 if ((parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_TFO_ENABLE) == in necp_client_check_tcp_heuristics()
9141 struct necp_client_parsed_parameters parsed_parameters = {}; in necp_client_copy_parameters_locked() local
9142 …e_parameters(client, client->parameters, (u_int32_t)client->parameters_length, &parsed_parameters); in necp_client_copy_parameters_locked()
9145 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_EFFECTIVE_PID) { in necp_client_copy_parameters_locked()
9146 parameters->epid = parsed_parameters.effective_pid; in necp_client_copy_parameters_locked()
9153 memcpy(¶meters->local_addr, &parsed_parameters.local_addr, sizeof(parameters->local_addr)); in necp_client_copy_parameters_locked()
9154 memcpy(¶meters->remote_addr, &parsed_parameters.remote_addr, sizeof(parameters->remote_addr)); in necp_client_copy_parameters_locked()
9155 parameters->ip_protocol = parsed_parameters.ip_protocol; in necp_client_copy_parameters_locked()
9156 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_TRANSPORT_PROTOCOL) { in necp_client_copy_parameters_locked()
9157 parameters->transport_protocol = parsed_parameters.transport_protocol; in necp_client_copy_parameters_locked()
9159 parameters->transport_protocol = parsed_parameters.ip_protocol; in necp_client_copy_parameters_locked()
9161 parameters->ethertype = parsed_parameters.ethertype; in necp_client_copy_parameters_locked()
9162 parameters->traffic_class = parsed_parameters.traffic_class; in necp_client_copy_parameters_locked()
9164 uuid_copy(parameters->euuid, parsed_parameters.effective_uuid); in necp_client_copy_parameters_locked()
9168 parameters->is_listener = (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER) ? 1 : 0; in necp_client_copy_parameters_locked()
9169 …parameters->is_interpose = (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_INTERPOSE) ? 1 : … in necp_client_copy_parameters_locked()
9170 …parameters->is_custom_ether = (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_CUSTOM_ETHER) … in necp_client_copy_parameters_locked()
9184 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_LOCAL_ADDR_PREFERENCE) { in necp_client_copy_parameters_locked()
9185 …if (parsed_parameters.local_address_preference == NECP_CLIENT_PARAMETER_LOCAL_ADDRESS_PREFERENCE_D… in necp_client_copy_parameters_locked()
9187 …} else if (parsed_parameters.local_address_preference == NECP_CLIENT_PARAMETER_LOCAL_ADDRESS_PREFE… in necp_client_copy_parameters_locked()
9190 …} else if (parsed_parameters.local_address_preference == NECP_CLIENT_PARAMETER_LOCAL_ADDRESS_PREFE… in necp_client_copy_parameters_locked()
9198 if ((parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) && in necp_client_copy_parameters_locked()
9199 (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_NO_WAKE_FROM_SLEEP)) { in necp_client_copy_parameters_locked()
9203 if ((parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) && in necp_client_copy_parameters_locked()
9204 (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_REUSE_LOCAL)) { in necp_client_copy_parameters_locked()
9210 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLOW_DEMUX_PATTERN) { in necp_client_copy_parameters_locked()
9211 if (parsed_parameters.demux_patterns[0].len == 0) { in necp_client_copy_parameters_locked()
9230 if (parsed_parameters.demux_pattern_count > 0) { in necp_client_copy_parameters_locked()
9231 for (int i = 0; i < parsed_parameters.demux_pattern_count; i++) { in necp_client_copy_parameters_locked()
9232 …memcpy(¶meters->demux_patterns[i], &parsed_parameters.demux_patterns[i], sizeof(struct necp_de… in necp_client_copy_parameters_locked()
9234 parameters->demux_pattern_count = parsed_parameters.demux_pattern_count; in necp_client_copy_parameters_locked()
9240 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_EXTENDED_FLAGS) { in necp_client_copy_parameters_locked()
9241 if (parsed_parameters.extended_flags & NECP_CLIENT_PARAMETER_EXTENDED_FLAG_AOP2_OFFLOAD) { in necp_client_copy_parameters_locked()
9956 struct necp_client_nexus_parameters parsed_parameters = {}; in necp_client_agent_action() local
9957 necp_client_copy_parameters_locked(client, &parsed_parameters); in necp_client_agent_action()
9966 (struct necp_client_agent_parameters *)&parsed_parameters, in necp_client_agent_action()