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,
2723 const struct necp_client_parsed_parameters *parsed_parameters, in necp_client_add_agent_interface_options() argument
2737 (void)necp_netagent_applies_to_client(client, parsed_parameters, &ifp->if_agentids[i], TRUE, in necp_client_add_agent_interface_options()
2746 const struct necp_client_parsed_parameters *parsed_parameters, in necp_client_add_browse_interface_options() argument
2765 necp_netagent_is_requested(parsed_parameters, &ifp->if_agentids[i]))) { in necp_client_add_browse_interface_options()
2905 …sed_parameters(struct necp_client *client, struct necp_client_parsed_parameters *parsed_parameters) in necp_client_trace_parsed_parameters() argument
2911 uuid_unparse_lower(parsed_parameters->effective_uuid, uuid_str); in necp_client_trace_parsed_parameters()
2913 switch (parsed_parameters->local_addr.sa.sa_family) { in necp_client_trace_parsed_parameters()
2915 if (parsed_parameters->local_addr.sa.sa_len == sizeof(struct sockaddr_in)) { in necp_client_trace_parsed_parameters()
2916 struct sockaddr_in *addr = &parsed_parameters->local_addr.sin; in necp_client_trace_parsed_parameters()
2921 if (parsed_parameters->local_addr.sa.sa_len == sizeof(struct sockaddr_in6)) { in necp_client_trace_parsed_parameters()
2922 struct sockaddr_in6 *addr6 = &parsed_parameters->local_addr.sin6; in necp_client_trace_parsed_parameters()
2930 switch (parsed_parameters->remote_addr.sa.sa_family) { in necp_client_trace_parsed_parameters()
2932 if (parsed_parameters->remote_addr.sa.sa_len == sizeof(struct sockaddr_in)) { in necp_client_trace_parsed_parameters()
2933 struct sockaddr_in *addr = &parsed_parameters->remote_addr.sin; in necp_client_trace_parsed_parameters()
2938 if (parsed_parameters->remote_addr.sa.sa_len == sizeof(struct sockaddr_in6)) { in necp_client_trace_parsed_parameters()
2939 struct sockaddr_in6 *addr6 = &parsed_parameters->remote_addr.sin6; in necp_client_trace_parsed_parameters()
2952 parsed_parameters->valid_fields, in necp_client_trace_parsed_parameters()
2953 parsed_parameters->flags, in necp_client_trace_parsed_parameters()
2954 parsed_parameters->extended_flags, in necp_client_trace_parsed_parameters()
2955 parsed_parameters->delegated_upid, in necp_client_trace_parsed_parameters()
2957 parsed_parameters->required_interface_index, in necp_client_trace_parsed_parameters()
2958 parsed_parameters->required_interface_type, in necp_client_trace_parsed_parameters()
2959 parsed_parameters->local_address_preference, in necp_client_trace_parsed_parameters()
2960 parsed_parameters->ip_protocol, in necp_client_trace_parsed_parameters()
2961 parsed_parameters->transport_protocol, in necp_client_trace_parsed_parameters()
2962 parsed_parameters->ethertype, in necp_client_trace_parsed_parameters()
2963 parsed_parameters->effective_pid, in necp_client_trace_parsed_parameters()
2965 parsed_parameters->uid, in necp_client_trace_parsed_parameters()
2966 parsed_parameters->persona_id, in necp_client_trace_parsed_parameters()
2967 parsed_parameters->traffic_class); in necp_client_trace_parsed_parameters()
2970 parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_KNOWN_TRACKER, in necp_client_trace_parsed_parameters()
2971 parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_NON_APP_INITIATED, in necp_client_trace_parsed_parameters()
2972 parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_SILENT, in necp_client_trace_parsed_parameters()
2973 parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_APPROVED_APP_DOMAIN); in necp_client_trace_parsed_parameters()
2975 …for (i = 0; i < NECP_MAX_INTERFACE_PARAMETERS && parsed_parameters->prohibited_interfaces[i][0]; i… in necp_client_trace_parsed_parameters()
2976 …NECP_CLIENT_PARAMS_LOG(client, "Parsed prohibited_interfaces[%d] <%s>", i, parsed_parameters->proh… in necp_client_trace_parsed_parameters()
2979 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && parsed_parameters->required_netagent_types[i].netagen… in necp_client_trace_parsed_parameters()
2981 parsed_parameters->required_netagent_types[i].netagent_domain, in necp_client_trace_parsed_parameters()
2982 parsed_parameters->required_netagent_types[i].netagent_type); in necp_client_trace_parsed_parameters()
2984 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && parsed_parameters->prohibited_netagent_types[i].netag… in necp_client_trace_parsed_parameters()
2986 parsed_parameters->prohibited_netagent_types[i].netagent_domain, in necp_client_trace_parsed_parameters()
2987 parsed_parameters->prohibited_netagent_types[i].netagent_type); in necp_client_trace_parsed_parameters()
2989 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && parsed_parameters->preferred_netagent_types[i].netage… in necp_client_trace_parsed_parameters()
2991 parsed_parameters->preferred_netagent_types[i].netagent_domain, in necp_client_trace_parsed_parameters()
2992 parsed_parameters->preferred_netagent_types[i].netagent_type); in necp_client_trace_parsed_parameters()
2994 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && parsed_parameters->avoided_netagent_types[i].netagent… in necp_client_trace_parsed_parameters()
2996 parsed_parameters->avoided_netagent_types[i].netagent_domain, in necp_client_trace_parsed_parameters()
2997 parsed_parameters->avoided_netagent_types[i].netagent_type); in necp_client_trace_parsed_parameters()
3000 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && !uuid_is_null(parsed_parameters->required_netagents[i… in necp_client_trace_parsed_parameters()
3001 uuid_unparse_lower(parsed_parameters->required_netagents[i], uuid_str); in necp_client_trace_parsed_parameters()
3004 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && !uuid_is_null(parsed_parameters->prohibited_netagents… in necp_client_trace_parsed_parameters()
3005 uuid_unparse_lower(parsed_parameters->prohibited_netagents[i], uuid_str); in necp_client_trace_parsed_parameters()
3008 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && !uuid_is_null(parsed_parameters->preferred_netagents[… in necp_client_trace_parsed_parameters()
3009 uuid_unparse_lower(parsed_parameters->preferred_netagents[i], uuid_str); in necp_client_trace_parsed_parameters()
3012 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && !uuid_is_null(parsed_parameters->avoided_netagents[i]… in necp_client_trace_parsed_parameters()
3013 uuid_unparse_lower(parsed_parameters->avoided_netagents[i], uuid_str); in necp_client_trace_parsed_parameters()
3036 struct necp_client_parsed_parameters *parsed_parameters) in necp_client_parse_parameters() argument
3057 if (parsed_parameters == NULL) { in necp_client_parse_parameters()
3061 memset(parsed_parameters, 0, sizeof(struct necp_client_parsed_parameters)); in necp_client_parse_parameters()
3084 parsed_parameters->required_interface_index = bound_interface->if_index; in necp_client_parse_parameters()
3085 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IF; in necp_client_parse_parameters()
3095 parsed_parameters->local_addr.sin6 = address_struct->address.sin6; in necp_client_parse_parameters()
3096 if (!necp_address_is_wildcard(&parsed_parameters->local_addr)) { in necp_client_parse_parameters()
3097 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_LOCAL_ADDR; in necp_client_parse_parameters()
3099 …if ((parsed_parameters->local_addr.sa.sa_family == AF_INET && parsed_parameters->local_addr.sin.si… in necp_client_parse_parameters()
3100 …(parsed_parameters->local_addr.sa.sa_family == AF_INET6 && parsed_parameters->local_addr.sin6.sin6… in necp_client_parse_parameters()
3101 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_LOCAL_PORT; in necp_client_parse_parameters()
3111 parsed_parameters->local_addr.sin6 = endpoint->u.sin6; in necp_client_parse_parameters()
3112 if (!necp_address_is_wildcard(&parsed_parameters->local_addr)) { in necp_client_parse_parameters()
3113 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_LOCAL_ADDR; in necp_client_parse_parameters()
3115 …if ((parsed_parameters->local_addr.sa.sa_family == AF_INET && parsed_parameters->local_addr.sin.si… in necp_client_parse_parameters()
3116 …(parsed_parameters->local_addr.sa.sa_family == AF_INET6 && parsed_parameters->local_addr.sin6.sin6… in necp_client_parse_parameters()
3117 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_LOCAL_PORT; in necp_client_parse_parameters()
3127 parsed_parameters->remote_addr.sin6 = address_struct->address.sin6; in necp_client_parse_parameters()
3128 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REMOTE_ADDR; in necp_client_parse_parameters()
3137 parsed_parameters->remote_addr.sin6 = endpoint->u.sin6; in necp_client_parse_parameters()
3138 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REMOTE_ADDR; in necp_client_parse_parameters()
3148 memcpy(parsed_parameters->prohibited_interfaces[num_prohibited_interfaces], value, length); in necp_client_parse_parameters()
3149 …parsed_parameters->prohibited_interfaces[num_prohibited_interfaces][length - 1] = 0; // Ma… in necp_client_parse_parameters()
3151 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_IF; in necp_client_parse_parameters()
3156 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IFTYPE) { in necp_client_parse_parameters()
3160 memcpy(&parsed_parameters->required_interface_type, value, sizeof(u_int8_t)); in necp_client_parse_parameters()
3161 if (parsed_parameters->required_interface_type) { in necp_client_parse_parameters()
3162 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IFTYPE; in necp_client_parse_parameters()
3172 …memcpy(&parsed_parameters->prohibited_interface_types[num_prohibited_interface_types], value, size… in necp_client_parse_parameters()
3174 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_IFTYPE; in necp_client_parse_parameters()
3183 memcpy(&parsed_parameters->required_netagents[num_required_agents], value, sizeof(uuid_t)); in necp_client_parse_parameters()
3185 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT; in necp_client_parse_parameters()
3194 … memcpy(&parsed_parameters->prohibited_netagents[num_prohibited_agents], value, sizeof(uuid_t)); in necp_client_parse_parameters()
3196 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_AGENT; in necp_client_parse_parameters()
3205 memcpy(&parsed_parameters->preferred_netagents[num_preferred_agents], value, sizeof(uuid_t)); in necp_client_parse_parameters()
3207 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PREFERRED_AGENT; in necp_client_parse_parameters()
3216 memcpy(&parsed_parameters->avoided_netagents[num_avoided_agents], value, sizeof(uuid_t)); in necp_client_parse_parameters()
3218 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_AVOIDED_AGENT; in necp_client_parse_parameters()
3227 …memcpy(&parsed_parameters->required_netagent_types[num_required_agent_types], value, sizeof(struct… in necp_client_parse_parameters()
3229 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT_TYPE; in necp_client_parse_parameters()
3238 …memcpy(&parsed_parameters->prohibited_netagent_types[num_prohibited_agent_types], value, sizeof(st… in necp_client_parse_parameters()
3240 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_AGENT_TYPE; in necp_client_parse_parameters()
3249 …memcpy(&parsed_parameters->preferred_netagent_types[num_preferred_agent_types], value, sizeof(stru… in necp_client_parse_parameters()
3251 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PREFERRED_AGENT_TYPE; in necp_client_parse_parameters()
3260 …memcpy(&parsed_parameters->avoided_netagent_types[num_avoided_agent_types], value, sizeof(struct n… in necp_client_parse_parameters()
3262 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_AVOIDED_AGENT_TYPE; in necp_client_parse_parameters()
3268 memcpy(&parsed_parameters->flags, value, sizeof(parsed_parameters->flags)); in necp_client_parse_parameters()
3269 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_FLAGS; in necp_client_parse_parameters()
3277 parsed_parameters->ip_protocol = (u_int8_t)large_ip_protocol; in necp_client_parse_parameters()
3278 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_IP_PROTOCOL; in necp_client_parse_parameters()
3279 } else if (length >= sizeof(parsed_parameters->ip_protocol)) { in necp_client_parse_parameters()
3280 memcpy(&parsed_parameters->ip_protocol, value, sizeof(parsed_parameters->ip_protocol)); in necp_client_parse_parameters()
3281 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_IP_PROTOCOL; in necp_client_parse_parameters()
3286 if (length >= sizeof(parsed_parameters->transport_protocol)) { in necp_client_parse_parameters()
3287 …memcpy(&parsed_parameters->transport_protocol, value, sizeof(parsed_parameters->transport_protocol… in necp_client_parse_parameters()
3288 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_TRANSPORT_PROTOCOL; in necp_client_parse_parameters()
3293 if (length >= sizeof(parsed_parameters->effective_pid)) { in necp_client_parse_parameters()
3294 memcpy(&parsed_parameters->effective_pid, value, sizeof(parsed_parameters->effective_pid)); in necp_client_parse_parameters()
3295 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_EFFECTIVE_PID; in necp_client_parse_parameters()
3300 if (length >= sizeof(parsed_parameters->delegated_upid)) { in necp_client_parse_parameters()
3301 memcpy(&parsed_parameters->delegated_upid, value, sizeof(parsed_parameters->delegated_upid)); in necp_client_parse_parameters()
3302 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_DELEGATED_UPID; in necp_client_parse_parameters()
3307 if (length >= sizeof(parsed_parameters->ethertype)) { in necp_client_parse_parameters()
3308 memcpy(&parsed_parameters->ethertype, value, sizeof(parsed_parameters->ethertype)); in necp_client_parse_parameters()
3309 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_ETHERTYPE; in necp_client_parse_parameters()
3314 if (length >= sizeof(parsed_parameters->effective_uuid)) { in necp_client_parse_parameters()
3315 memcpy(&parsed_parameters->effective_uuid, value, sizeof(parsed_parameters->effective_uuid)); in necp_client_parse_parameters()
3316 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_EFFECTIVE_UUID; in necp_client_parse_parameters()
3321 if (length >= sizeof(parsed_parameters->traffic_class)) { in necp_client_parse_parameters()
3322 memcpy(&parsed_parameters->traffic_class, value, sizeof(parsed_parameters->traffic_class)); in necp_client_parse_parameters()
3323 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_TRAFFIC_CLASS; in necp_client_parse_parameters()
3350 memcpy(&parsed_parameters->parent_uuid, value, sizeof(parsed_parameters->parent_uuid)); in necp_client_parse_parameters()
3351 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PARENT_UUID; in necp_client_parse_parameters()
3356 if (length >= sizeof(parsed_parameters->local_address_preference)) { in necp_client_parse_parameters()
3357 …memcpy(&parsed_parameters->local_address_preference, value, sizeof(parsed_parameters->local_addres… in necp_client_parse_parameters()
3358 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_LOCAL_ADDR_PREFERENCE; in necp_client_parse_parameters()
3364 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_ATTRIBUTED_BUNDLE_IDENTIFIER; in necp_client_parse_parameters()
3369 if (parsed_parameters->demux_pattern_count >= NECP_MAX_DEMUX_PATTERNS) { in necp_client_parse_parameters()
3373 …memcpy(&parsed_parameters->demux_patterns[parsed_parameters->demux_pattern_count], value, sizeof(s… in necp_client_parse_parameters()
3374 parsed_parameters->demux_pattern_count++; in necp_client_parse_parameters()
3375 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_FLOW_DEMUX_PATTERN; in necp_client_parse_parameters()
3383 parsed_parameters->uid = application_id->uid; in necp_client_parse_parameters()
3384 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_UID; in necp_client_parse_parameters()
3386 uuid_copy(parsed_parameters->effective_uuid, application_id->effective_uuid); in necp_client_parse_parameters()
3387 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_EFFECTIVE_UUID; in necp_client_parse_parameters()
3389 parsed_parameters->persona_id = application_id->persona_id; in necp_client_parse_parameters()
3390 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PERSONA_ID; in necp_client_parse_parameters()
3396 memcpy(&parsed_parameters->extended_flags, value, sizeof(parsed_parameters->extended_flags)); in necp_client_parse_parameters()
3397 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_EXTENDED_FLAGS; in necp_client_parse_parameters()
3453 …} else if (answer_struct->address_answer.sa.sa_family != parsed_parameters->remote_addr.sa.sa_fami… in necp_client_parse_parameters()
3454 answer_struct->address_answer.sa.sa_len != parsed_parameters->remote_addr.sa.sa_len) { in necp_client_parse_parameters()
3458 … answer_struct->address_answer.sin.sin_port != parsed_parameters->remote_addr.sin.sin_port) { in necp_client_parse_parameters()
3462 …answer_struct->address_answer.sin.sin_addr.s_addr != parsed_parameters->remote_addr.sin.sin_addr.s… in necp_client_parse_parameters()
3464 …memcmp(&sin6.sin6_addr, &parsed_parameters->remote_addr.sin6.sin6_addr, sizeof(struct in6_addr)) !… in necp_client_parse_parameters()
3522 necp_client_trace_parsed_parameters(client, parsed_parameters); in necp_client_parse_parameters()
4205 struct necp_client_parsed_parameters * __single parsed_parameters = NULL; in necp_socket_is_allowed_to_recv_on_interface() local
4207 parsed_parameters = kalloc_type(struct necp_client_parsed_parameters, in necp_socket_is_allowed_to_recv_on_interface()
4209 …se_parameters(client, client->parameters, (u_int32_t)client->parameters_length, parsed_parameters); in necp_socket_is_allowed_to_recv_on_interface()
4211 if (!necp_ifnet_matches_parameters(interface, parsed_parameters, 0, NULL, true, false)) { in necp_socket_is_allowed_to_recv_on_interface()
4215 kfree_type(struct necp_client_parsed_parameters, parsed_parameters); in necp_socket_is_allowed_to_recv_on_interface()
4469 necp_update_parsed_parameters(struct necp_client_parsed_parameters *parsed_parameters, in necp_update_parsed_parameters() argument
4472 if (parsed_parameters == NULL || in necp_update_parsed_parameters()
4490 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT) { in necp_update_parsed_parameters()
4493 if (uuid_compare(parsed_parameters->required_netagents[j], result->netagents[i]) == 0) { in necp_update_parsed_parameters()
4497 if (uuid_is_null(parsed_parameters->required_netagents[j])) { in necp_update_parsed_parameters()
4499 memcpy(&parsed_parameters->required_netagents[j], result->netagents[i], sizeof(uuid_t)); in necp_update_parsed_parameters()
4506 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT; in necp_update_parsed_parameters()
4507 memcpy(&parsed_parameters->required_netagents[0], result->netagents[i], sizeof(uuid_t)); in necp_update_parsed_parameters()
4512 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT_TYPE) { in necp_update_parsed_parameters()
4517 …if (strbuflen(parsed_parameters->required_netagent_types[j].netagent_domain, sizeof(parsed_paramet… in necp_update_parsed_parameters()
4518 …strbuflen(parsed_parameters->required_netagent_types[j].netagent_type, sizeof(parsed_parameters->r… in necp_update_parsed_parameters()
4522 …if (strbufcmp(parsed_parameters->required_netagent_types[j].netagent_domain, sizeof(parsed_paramet… in necp_update_parsed_parameters()
4523 …strbufcmp(parsed_parameters->required_netagent_types[j].netagent_type, sizeof(parsed_parameters->r… in necp_update_parsed_parameters()
4528 …memset(&parsed_parameters->required_netagent_types[NECP_MAX_AGENT_PARAMETERS - 1], 0, sizeof(struc… in necp_update_parsed_parameters()
4532 memmove(&parsed_parameters->required_netagent_types[j], in necp_update_parsed_parameters()
4533 &parsed_parameters->required_netagent_types[j + 1], in necp_update_parsed_parameters()
4535 …memset(&parsed_parameters->required_netagent_types[NECP_MAX_AGENT_PARAMETERS - 1], 0, sizeof(struc… in necp_update_parsed_parameters()
4549 parsed_parameters->required_interface_index != IFSCOPE_NONE && in necp_update_parsed_parameters()
4550 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IF) == 0) { in necp_update_parsed_parameters()
4552 parsed_parameters->required_interface_index = IFSCOPE_NONE; in necp_update_parsed_parameters()
4572 struct necp_client_parsed_parameters *parsed_parameters, in necp_calculate_client_result() argument
4585 if (necp_find_matching_interface_index(parsed_parameters, &matching_if_index, &validate_agents)) { in necp_calculate_client_result()
4587 parsed_parameters->required_interface_index = matching_if_index; in necp_calculate_client_result()
4607 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT) { in necp_calculate_client_result()
4609 if (uuid_is_null(parsed_parameters->required_netagents[i])) { in necp_calculate_client_result()
4624 if (uuid_compare(parsed_parameters->required_netagents[i], result->netagents[j]) == 0) { in necp_calculate_client_result()
4637 …if (!requirement_failed && parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED… in necp_calculate_client_result()
4639 …if (strbuflen(parsed_parameters->required_netagent_types[i].netagent_domain, sizeof(parsed_paramet… in necp_calculate_client_result()
4640 …strbuflen(parsed_parameters->required_netagent_types[i].netagent_type, sizeof(parsed_parameters->r… in necp_calculate_client_result()
4659 if (necp_agent_types_match(parsed_parameters->required_netagent_types[i].netagent_domain, in necp_calculate_client_result()
4660 parsed_parameters->required_netagent_types[i].netagent_type, in necp_calculate_client_result()
4737 struct necp_client_parsed_parameters * __single parsed_parameters = NULL; in necp_update_client_result() local
4743 parsed_parameters = kalloc_type(struct necp_client_parsed_parameters, in necp_update_client_result()
4749 …se_parameters(client, client->parameters, (u_int32_t)client->parameters_length, parsed_parameters); in necp_update_client_result()
4751 kfree_type(struct necp_client_parsed_parameters, parsed_parameters); in necp_update_client_result()
4754 bool originally_scoped = (parsed_parameters->required_interface_index != IFSCOPE_NONE); in necp_update_client_result()
4757 client->ip_protocol = parsed_parameters->ip_protocol; in necp_update_client_result()
4764 …if (!necp_calculate_client_result(proc, client, parsed_parameters, &result, &flags, &reason, &v4_g… in necp_update_client_result()
4765 kfree_type(struct necp_client_parsed_parameters, parsed_parameters); in necp_update_client_result()
4769 if (necp_update_parsed_parameters(parsed_parameters, &result)) { in necp_update_client_result()
4771 …if (!necp_calculate_client_result(proc, client, parsed_parameters, &result, &flags, &reason, &v4_g… in necp_update_client_result()
4772 kfree_type(struct necp_client_parsed_parameters, parsed_parameters); in necp_update_client_result()
4777 if ((parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER) && in necp_update_client_result()
4778 parsed_parameters->required_interface_index != IFSCOPE_NONE && in necp_update_client_result()
4779 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IF) == 0) { in necp_update_client_result()
4781 parsed_parameters->required_interface_index = IFSCOPE_NONE; in necp_update_client_result()
4789 if ((parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_MULTIPATH) || in necp_update_client_result()
4790 (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_BROWSE) || in necp_update_client_result()
4791 ((parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER) && in necp_update_client_result()
4802 parsed_parameters->required_interface_index == result.routed_interface_index) { in necp_update_client_result()
4814 if (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER) { in necp_update_client_result()
4852 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_REQUIRED_FIELDS) && in necp_update_client_result()
4853 parsed_parameters->required_interface_index != IFSCOPE_NONE && in necp_update_client_result()
4854 parsed_parameters->required_interface_index != result.routed_interface_index) { in necp_update_client_result()
4855 routed_interface_index = parsed_parameters->required_interface_index; in necp_update_client_result()
4901 bool has_remote_addr = parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REMOTE_ADDR; in necp_update_client_result()
4972 …if (necp_netagent_applies_to_client(client, parsed_parameters, &netagent.netagent_uuid, TRUE, 0, 0… in necp_update_client_result()
4985 } else if (parsed_parameters->required_interface_index != IFSCOPE_NONE && in necp_update_client_result()
4986 parsed_parameters->required_interface_index <= (u_int32_t)if_index) { in necp_update_client_result()
4988 direct_interface = ifindex2ifnet[parsed_parameters->required_interface_index]; in necp_update_client_result()
4998 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_REQUIRED_FIELDS) && in necp_update_client_result()
4999 parsed_parameters->required_interface_index != IFSCOPE_NONE && in necp_update_client_result()
5000 …parsed_parameters->required_interface_index != result.routing_result_parameter.tunnel_interface_in… in necp_update_client_result()
5001 parsed_parameters->required_interface_index <= (u_int32_t)if_index) { in necp_update_client_result()
5002 original_scoped_interface = ifindex2ifnet[parsed_parameters->required_interface_index]; in necp_update_client_result()
5038 …if (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_MULTIPATH && !(parsed_parameters->flags … in necp_update_client_result()
5042 necp_client_add_agent_interface_options(client, parsed_parameters, direct_interface); in necp_update_client_result()
5048 if (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_INBOUND) { in necp_update_client_result()
5053 necp_ifnet_matches_parameters(multi_interface, parsed_parameters, 0, NULL, true, false)) { in necp_update_client_result()
5055 necp_client_add_agent_interface_options(client, parsed_parameters, multi_interface); in necp_update_client_result()
5063 necp_ifnet_matches_parameters(multi_interface, parsed_parameters, 0, NULL, true, false)) { in necp_update_client_result()
5065 necp_client_add_agent_interface_options(client, parsed_parameters, multi_interface); in necp_update_client_result()
5073 } else if (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER) { in necp_update_client_result()
5078 necp_client_add_agent_interface_options(client, parsed_parameters, direct_interface); in necp_update_client_result()
5089 necp_ifnet_matches_parameters(listen_interface, parsed_parameters, 0, NULL, true, false)) { in necp_update_client_result()
5091 necp_client_add_agent_interface_options(client, parsed_parameters, listen_interface); in necp_update_client_result()
5095 } else if (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_BROWSE) { in necp_update_client_result()
5099 necp_client_add_browse_interface_options(client, parsed_parameters, direct_interface); in necp_update_client_result()
5105 if (necp_ifnet_matches_parameters(browse_interface, parsed_parameters, 0, NULL, true, false)) { in necp_update_client_result()
5106 necp_client_add_browse_interface_options(client, parsed_parameters, browse_interface); in necp_update_client_result()
5147 if (necp_netagent_applies_to_client(client, parsed_parameters, &netagent.netagent_uuid, FALSE, in necp_update_client_result()
5186 if (necp_netagent_applies_to_client(client, parsed_parameters, &netagent.netagent_uuid, TRUE, in necp_update_client_result()
5227 if (necp_netagent_applies_to_client(client, parsed_parameters, &netagent.netagent_uuid, FALSE, in necp_update_client_result()
5272 kfree_type(struct necp_client_parsed_parameters, parsed_parameters); in necp_update_client_result()
5910 struct necp_client_parsed_parameters *parsed_parameters, in necp_ifnet_matches_parameters() argument
5922 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IF) { in necp_ifnet_matches_parameters()
5923 if (parsed_parameters->required_interface_index != ifp->if_index) { in necp_ifnet_matches_parameters()
5935 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_LOCAL_ADDR) { in necp_ifnet_matches_parameters()
5936 if (!necp_ifnet_matches_local_address(ifp, SA(&parsed_parameters->local_addr.sa))) { in necp_ifnet_matches_parameters()
5944 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) { in necp_ifnet_matches_parameters()
5959 if ((parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_PROHIBIT_EXPENSIVE) && in necp_ifnet_matches_parameters()
5963 if ((parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_PROHIBIT_CONSTRAINED) && in necp_ifnet_matches_parameters()
5967 if (!(parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_ALLOW_ULTRA_CONSTRAINED) && in necp_ifnet_matches_parameters()
5975 …!(parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) || // or if there are… in necp_ifnet_matches_parameters()
5976 …!(parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_ONLY_PRIMARY_REQUIRES_TYPE)) && // or… in necp_ifnet_matches_parameters()
5977 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IFTYPE) && in necp_ifnet_matches_parameters()
5978 !necp_ifnet_matches_type(ifp, parsed_parameters->required_interface_type, FALSE)) { in necp_ifnet_matches_parameters()
5982 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IFTYPE) { in necp_ifnet_matches_parameters()
5988 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_IFTYPE) { in necp_ifnet_matches_parameters()
5990 if (parsed_parameters->prohibited_interface_types[i] == 0) { in necp_ifnet_matches_parameters()
5994 if (necp_ifnet_matches_type(ifp, parsed_parameters->prohibited_interface_types[i], TRUE)) { in necp_ifnet_matches_parameters()
6000 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_IF) { in necp_ifnet_matches_parameters()
6002 …if (strbuflen(parsed_parameters->prohibited_interfaces[i], sizeof(parsed_parameters->prohibited_in… in necp_ifnet_matches_parameters()
6006 if (necp_ifnet_matches_name(ifp, parsed_parameters->prohibited_interfaces[i], TRUE)) { in necp_ifnet_matches_parameters()
6012 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT) { in necp_ifnet_matches_parameters()
6014 if (uuid_is_null(parsed_parameters->required_netagents[i])) { in necp_ifnet_matches_parameters()
6018 if (!necp_ifnet_matches_agent(ifp, &parsed_parameters->required_netagents[i], FALSE)) { in necp_ifnet_matches_parameters()
6028 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_AGENT) { in necp_ifnet_matches_parameters()
6030 if (uuid_is_null(parsed_parameters->prohibited_netagents[i])) { in necp_ifnet_matches_parameters()
6034 if (necp_ifnet_matches_agent(ifp, &parsed_parameters->prohibited_netagents[i], TRUE)) { in necp_ifnet_matches_parameters()
6040 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT_TYPE) { in necp_ifnet_matches_parameters()
6042 …if (strbuflen(parsed_parameters->required_netagent_types[i].netagent_domain, sizeof(parsed_paramet… in necp_ifnet_matches_parameters()
6043 …strbuflen(parsed_parameters->required_netagent_types[i].netagent_type, sizeof(parsed_parameters->r… in necp_ifnet_matches_parameters()
6047 …!necp_ifnet_matches_agent_type(ifp, parsed_parameters->required_netagent_types[i].netagent_domain,… in necp_ifnet_matches_parameters()
6057 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_AGENT_TYPE) { in necp_ifnet_matches_parameters()
6059 …if (strbuflen(parsed_parameters->prohibited_netagent_types[i].netagent_domain, sizeof(parsed_param… in necp_ifnet_matches_parameters()
6060 …strbuflen(parsed_parameters->prohibited_netagent_types[i].netagent_type, sizeof(parsed_parameters-… in necp_ifnet_matches_parameters()
6064 …necp_ifnet_matches_agent_type(ifp, parsed_parameters->prohibited_netagent_types[i].netagent_domain… in necp_ifnet_matches_parameters()
6072 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_PREFERRED_AGENT) { in necp_ifnet_matches_parameters()
6074 if (uuid_is_null(parsed_parameters->preferred_netagents[i])) { in necp_ifnet_matches_parameters()
6078 if (necp_ifnet_matches_agent(ifp, &parsed_parameters->preferred_netagents[i], TRUE)) { in necp_ifnet_matches_parameters()
6087 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_PREFERRED_AGENT_TYPE) { in necp_ifnet_matches_parameters()
6089 …if (strbuflen(parsed_parameters->preferred_netagent_types[i].netagent_domain, sizeof(parsed_parame… in necp_ifnet_matches_parameters()
6090 …strbuflen(parsed_parameters->preferred_netagent_types[i].netagent_type, sizeof(parsed_parameters->… in necp_ifnet_matches_parameters()
6094 …(necp_ifnet_matches_agent_type(ifp, parsed_parameters->preferred_netagent_types[i].netagent_domain… in necp_ifnet_matches_parameters()
6103 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_AVOIDED_AGENT) { in necp_ifnet_matches_parameters()
6105 if (uuid_is_null(parsed_parameters->avoided_netagents[i])) { in necp_ifnet_matches_parameters()
6109 if (!necp_ifnet_matches_agent(ifp, &parsed_parameters->avoided_netagents[i], TRUE)) { in necp_ifnet_matches_parameters()
6115 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_AVOIDED_AGENT_TYPE) { in necp_ifnet_matches_parameters()
6117 …if (strbuflen(parsed_parameters->avoided_netagent_types[i].netagent_domain, sizeof(parsed_paramete… in necp_ifnet_matches_parameters()
6118 …strbuflen(parsed_parameters->avoided_netagent_types[i].netagent_type, sizeof(parsed_parameters->av… in necp_ifnet_matches_parameters()
6122 …if (!necp_ifnet_matches_agent_type(ifp, parsed_parameters->avoided_netagent_types[i].netagent_doma… in necp_ifnet_matches_parameters()
6123 parsed_parameters->avoided_netagent_types[i].netagent_type, TRUE)) { in necp_ifnet_matches_parameters()
6138 necp_find_matching_interface_index(struct necp_client_parsed_parameters *parsed_parameters, in necp_find_matching_interface_index() argument
6146 if (parsed_parameters->required_interface_index != 0) { in necp_find_matching_interface_index()
6147 *return_ifindex = parsed_parameters->required_interface_index; in necp_find_matching_interface_index()
6154 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) { in necp_find_matching_interface_index()
6155 flags = parsed_parameters->flags; in necp_find_matching_interface_index()
6156 has_prohibit_flags = (parsed_parameters->flags & in necp_find_matching_interface_index()
6161 if (!(parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_INTERESTING_IFNET_FIELDS) && in necp_find_matching_interface_index()
6166 has_preferred_fields = (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_PREFERRED_FIELDS); in necp_find_matching_interface_index()
6171 if (!(parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_SCOPED_FIELDS) && in necp_find_matching_interface_index()
6176 if (ifp == NULL || necp_ifnet_matches_parameters(ifp, parsed_parameters, 0, NULL, false, false)) { in necp_find_matching_interface_index()
6182 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REMOTE_ADDR && in necp_find_matching_interface_index()
6183 parsed_parameters->remote_addr.sin6.sin6_family == AF_INET6 && in necp_find_matching_interface_index()
6184 parsed_parameters->remote_addr.sin6.sin6_scope_id != IFSCOPE_NONE && in necp_find_matching_interface_index()
6185 parsed_parameters->remote_addr.sin6.sin6_scope_id <= (u_int32_t)if_index) { in necp_find_matching_interface_index()
6186 ifp = ifindex2ifnet[parsed_parameters->remote_addr.sin6.sin6_scope_id]; in necp_find_matching_interface_index()
6187 … if (ifp != NULL && necp_ifnet_matches_parameters(ifp, parsed_parameters, 0, NULL, false, false)) { in necp_find_matching_interface_index()
6199 …if (necp_ifnet_matches_parameters(ifp, parsed_parameters, flags, &preferred_count, false, false)) { in necp_find_matching_interface_index()
6222 bool is_listener = ((parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) && in necp_find_matching_interface_index()
6223 (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER)); in necp_find_matching_interface_index()
6226 if ((parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_SCOPED_FIELDS) && in necp_find_matching_interface_index()
6227 ((!(parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IFTYPE)) || in necp_find_matching_interface_index()
6228 …necp_interface_type_should_match_unranked_interfaces(parsed_parameters->required_interface_type) || in necp_find_matching_interface_index()
6229 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_LOCAL_ADDR) || in necp_find_matching_interface_index()
6238 … if (necp_ifnet_matches_parameters(ifp, parsed_parameters, flags, &preferred_count, false, true)) { in necp_find_matching_interface_index()
6256 …((parsed_parameters->valid_fields & (NECP_PARSED_PARAMETERS_SCOPED_FIELDS | NECP_PARSED_PARAMETERS… in necp_find_matching_interface_index()
6257 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_PREFERRED_FIELDS))) { in necp_find_matching_interface_index()
6264 !(parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_SCOPED_IFNET_FIELDS)) { in necp_find_matching_interface_index()
7856 struct necp_client_parsed_parameters parsed_parameters = {}; in necp_client_add() local
7857 …e_parameters(client, client->parameters, (u_int32_t)client->parameters_length, &parsed_parameters); in necp_client_add()
7860 ((parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_DELEGATED_UPID) || in necp_client_add()
7861 … (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_ATTRIBUTED_BUNDLE_IDENTIFIER))) { in necp_client_add()
7864 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_DELEGATED_UPID) { in necp_client_add()
7868 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_ATTRIBUTED_BUNDLE_IDENTIFIER) { in necp_client_add()
7876 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_DELEGATED_UPID) { in necp_client_add()
7878 client->delegated_upid = parsed_parameters.delegated_upid; in necp_client_add()
7882 if (parse_error == 0 && parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_INTERPOSE) { in necp_client_add()
7892 if (parse_error == 0 && (parsed_parameters.flags & in necp_client_add()
7903 …if (parse_error == 0 && (parsed_parameters.extended_flags & NECP_CLIENT_PARAMETER_EXTENDED_FLAG_AO… in necp_client_add()
7912 if ((parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_MULTIPATH) || in necp_client_add()
7913 (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_BROWSE) || in necp_client_add()
7914 (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER)) { in necp_client_add()
7921 if (parse_error == 0 && parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER && in necp_client_add()
7922 … (parsed_parameters.ip_protocol == IPPROTO_TCP || parsed_parameters.ip_protocol == IPPROTO_UDP)) { in necp_client_add()
7928 flow_info.nfi_protocol = parsed_parameters.ip_protocol; in necp_client_add()
7930 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_EFFECTIVE_PID) { in necp_client_add()
7931 flow_info.nfi_effective_pid = parsed_parameters.effective_pid; in necp_client_add()
7938 if (parsed_parameters.local_addr.sa.sa_family == AF_UNSPEC) { in necp_client_add()
7941 parsed_parameters.local_addr.sin6.sin6_family = AF_INET6; in necp_client_add()
7942 parsed_parameters.local_addr.sin6.sin6_len = sizeof(struct sockaddr_in6); in necp_client_add()
7945 switch (parsed_parameters.local_addr.sa.sa_family) { in necp_client_add()
7947 …memcpy(&flow_info.nfi_laddr, &parsed_parameters.local_addr.sa, parsed_parameters.local_addr.sa.sa_… in necp_client_add()
7948 netns_addr = (uint32_t *)&parsed_parameters.local_addr.sin.sin_addr; in necp_client_add()
7953 …memcpy(&flow_info.nfi_laddr.sin6, &parsed_parameters.local_addr.sin6, parsed_parameters.local_addr… in necp_client_add()
7954 netns_addr = (uint32_t *)&parsed_parameters.local_addr.sin6.sin6_addr; in necp_client_add()
7960 …NECPLOG(LOG_ERR, "necp_client_add listener invalid address family (%d)", parsed_parameters.local_a… in necp_client_add()
7965 if ((parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) && in necp_client_add()
7966 (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_REUSE_LOCAL)) { in necp_client_add()
7969 if (parsed_parameters.local_addr.sin.sin_port == 0) { in necp_client_add()
7970 …rve_ephemeral(&client->port_reservation, netns_addr, netns_addr_len, parsed_parameters.ip_protocol, in necp_client_add()
7971 &parsed_parameters.local_addr.sin.sin_port, netns_flags, &flow_info); in necp_client_add()
7978 …arameters(client->parameters, (u_int32_t)client->parameters_length, parsed_parameters.local_addr.s… in necp_client_add()
7980 …error = netns_reserve(&client->port_reservation, netns_addr, netns_addr_len, parsed_parameters.ip_… in necp_client_add()
7981 parsed_parameters.local_addr.sin.sin_port, netns_flags, &flow_info); in necp_client_add()
7994 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_PARENT_UUID) { in necp_client_add()
7999 parent = necp_client_fd_find_client_unlocked(fd_data, parsed_parameters.parent_uuid); in necp_client_add()
8003 uuid_copy(parent_client_id, parsed_parameters.parent_uuid); in necp_client_add()
8014 …if (parse_error == 0 && parent != NULL && parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_… in necp_client_add()
8016 if (parsed_parameters.demux_patterns[0].len == 0) { in necp_client_add()
8030 if (parsed_parameters.ip_protocol != IPPROTO_UDP) { in necp_client_add()
8032 parsed_parameters.ip_protocol); in necp_client_add()
8035 if (parsed_parameters.ip_protocol != parent_parameters.ip_protocol) { in necp_client_add()
8039 …if (parsed_parameters.local_addr.sa.sa_family != AF_INET && parsed_parameters.local_addr.sa.sa_fam… in necp_client_add()
8041 parsed_parameters.local_addr.sa.sa_family); in necp_client_add()
8044 if (parsed_parameters.local_addr.sa.sa_family != parsed_parameters.remote_addr.sa.sa_family) { in necp_client_add()
8048 if (parsed_parameters.local_addr.sa.sa_family != parent_parameters.local_addr.sa.sa_family) { in necp_client_add()
8052 …if (SOCKADDR_CMP(&parsed_parameters.local_addr.sa, &parent_parameters.local_addr.sa, parsed_parame… in necp_client_add()
8056 …if (SOCKADDR_CMP(&parsed_parameters.remote_addr.sa, &parent_parameters.remote_addr.sa, parsed_para… in necp_client_add()
8060 if (parsed_parameters.local_addr.sin.sin_port != parent_parameters.local_addr.sin.sin_port) { in necp_client_add()
8064 if (parsed_parameters.remote_addr.sin.sin_port != parent_parameters.remote_addr.sin.sin_port) { in necp_client_add()
8378 struct necp_client_parsed_parameters parsed_parameters; in necp_client_check_tcp_heuristics() local
8383 &parsed_parameters); in necp_client_check_tcp_heuristics()
8405 if ((parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_ECN_ENABLE) == in necp_client_check_tcp_heuristics()
8411 if ((parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_ECN_DISABLE) == in necp_client_check_tcp_heuristics()
8428 if ((parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_TFO_ENABLE) == in necp_client_check_tcp_heuristics()
9110 struct necp_client_parsed_parameters parsed_parameters = {}; in necp_client_copy_parameters_locked() local
9111 …e_parameters(client, client->parameters, (u_int32_t)client->parameters_length, &parsed_parameters); in necp_client_copy_parameters_locked()
9114 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_EFFECTIVE_PID) { in necp_client_copy_parameters_locked()
9115 parameters->epid = parsed_parameters.effective_pid; in necp_client_copy_parameters_locked()
9122 memcpy(¶meters->local_addr, &parsed_parameters.local_addr, sizeof(parameters->local_addr)); in necp_client_copy_parameters_locked()
9123 memcpy(¶meters->remote_addr, &parsed_parameters.remote_addr, sizeof(parameters->remote_addr)); in necp_client_copy_parameters_locked()
9124 parameters->ip_protocol = parsed_parameters.ip_protocol; in necp_client_copy_parameters_locked()
9125 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_TRANSPORT_PROTOCOL) { in necp_client_copy_parameters_locked()
9126 parameters->transport_protocol = parsed_parameters.transport_protocol; in necp_client_copy_parameters_locked()
9128 parameters->transport_protocol = parsed_parameters.ip_protocol; in necp_client_copy_parameters_locked()
9130 parameters->ethertype = parsed_parameters.ethertype; in necp_client_copy_parameters_locked()
9131 parameters->traffic_class = parsed_parameters.traffic_class; in necp_client_copy_parameters_locked()
9133 uuid_copy(parameters->euuid, parsed_parameters.effective_uuid); in necp_client_copy_parameters_locked()
9137 parameters->is_listener = (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER) ? 1 : 0; in necp_client_copy_parameters_locked()
9138 …parameters->is_interpose = (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_INTERPOSE) ? 1 : … in necp_client_copy_parameters_locked()
9139 …parameters->is_custom_ether = (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_CUSTOM_ETHER) … in necp_client_copy_parameters_locked()
9153 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_LOCAL_ADDR_PREFERENCE) { in necp_client_copy_parameters_locked()
9154 …if (parsed_parameters.local_address_preference == NECP_CLIENT_PARAMETER_LOCAL_ADDRESS_PREFERENCE_D… in necp_client_copy_parameters_locked()
9156 …} else if (parsed_parameters.local_address_preference == NECP_CLIENT_PARAMETER_LOCAL_ADDRESS_PREFE… in necp_client_copy_parameters_locked()
9159 …} else if (parsed_parameters.local_address_preference == NECP_CLIENT_PARAMETER_LOCAL_ADDRESS_PREFE… in necp_client_copy_parameters_locked()
9167 if ((parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) && in necp_client_copy_parameters_locked()
9168 (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_NO_WAKE_FROM_SLEEP)) { in necp_client_copy_parameters_locked()
9172 if ((parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) && in necp_client_copy_parameters_locked()
9173 (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_REUSE_LOCAL)) { in necp_client_copy_parameters_locked()
9179 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLOW_DEMUX_PATTERN) { in necp_client_copy_parameters_locked()
9180 if (parsed_parameters.demux_patterns[0].len == 0) { in necp_client_copy_parameters_locked()
9199 if (parsed_parameters.demux_pattern_count > 0) { in necp_client_copy_parameters_locked()
9200 for (int i = 0; i < parsed_parameters.demux_pattern_count; i++) { in necp_client_copy_parameters_locked()
9201 …memcpy(¶meters->demux_patterns[i], &parsed_parameters.demux_patterns[i], sizeof(struct necp_de… in necp_client_copy_parameters_locked()
9203 parameters->demux_pattern_count = parsed_parameters.demux_pattern_count; in necp_client_copy_parameters_locked()
9209 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_EXTENDED_FLAGS) { in necp_client_copy_parameters_locked()
9210 if (parsed_parameters.extended_flags & NECP_CLIENT_PARAMETER_EXTENDED_FLAG_AOP2_OFFLOAD) { in necp_client_copy_parameters_locked()
9925 struct necp_client_nexus_parameters parsed_parameters = {}; in necp_client_agent_action() local
9926 necp_client_copy_parameters_locked(client, &parsed_parameters); in necp_client_agent_action()
9935 (struct necp_client_agent_parameters *)&parsed_parameters, in necp_client_agent_action()