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,
2728 const struct necp_client_parsed_parameters *parsed_parameters, in necp_client_add_agent_interface_options() argument
2742 (void)necp_netagent_applies_to_client(client, parsed_parameters, &ifp->if_agentids[i], TRUE, in necp_client_add_agent_interface_options()
2751 const struct necp_client_parsed_parameters *parsed_parameters, in necp_client_add_browse_interface_options() argument
2770 necp_netagent_is_requested(parsed_parameters, &ifp->if_agentids[i]))) { in necp_client_add_browse_interface_options()
2910 …sed_parameters(struct necp_client *client, struct necp_client_parsed_parameters *parsed_parameters) in necp_client_trace_parsed_parameters() argument
2916 uuid_unparse_lower(parsed_parameters->effective_uuid, uuid_str); in necp_client_trace_parsed_parameters()
2918 switch (parsed_parameters->local_addr.sa.sa_family) { in necp_client_trace_parsed_parameters()
2920 if (parsed_parameters->local_addr.sa.sa_len == sizeof(struct sockaddr_in)) { in necp_client_trace_parsed_parameters()
2921 struct sockaddr_in *addr = &parsed_parameters->local_addr.sin; in necp_client_trace_parsed_parameters()
2926 if (parsed_parameters->local_addr.sa.sa_len == sizeof(struct sockaddr_in6)) { in necp_client_trace_parsed_parameters()
2927 struct sockaddr_in6 *addr6 = &parsed_parameters->local_addr.sin6; in necp_client_trace_parsed_parameters()
2935 switch (parsed_parameters->remote_addr.sa.sa_family) { in necp_client_trace_parsed_parameters()
2937 if (parsed_parameters->remote_addr.sa.sa_len == sizeof(struct sockaddr_in)) { in necp_client_trace_parsed_parameters()
2938 struct sockaddr_in *addr = &parsed_parameters->remote_addr.sin; in necp_client_trace_parsed_parameters()
2943 if (parsed_parameters->remote_addr.sa.sa_len == sizeof(struct sockaddr_in6)) { in necp_client_trace_parsed_parameters()
2944 struct sockaddr_in6 *addr6 = &parsed_parameters->remote_addr.sin6; in necp_client_trace_parsed_parameters()
2957 parsed_parameters->valid_fields, in necp_client_trace_parsed_parameters()
2958 parsed_parameters->flags, in necp_client_trace_parsed_parameters()
2959 parsed_parameters->extended_flags, in necp_client_trace_parsed_parameters()
2960 parsed_parameters->delegated_upid, in necp_client_trace_parsed_parameters()
2962 parsed_parameters->required_interface_index, in necp_client_trace_parsed_parameters()
2963 parsed_parameters->required_interface_type, in necp_client_trace_parsed_parameters()
2964 parsed_parameters->local_address_preference, in necp_client_trace_parsed_parameters()
2965 parsed_parameters->ip_protocol, in necp_client_trace_parsed_parameters()
2966 parsed_parameters->transport_protocol, in necp_client_trace_parsed_parameters()
2967 parsed_parameters->ethertype, in necp_client_trace_parsed_parameters()
2968 parsed_parameters->effective_pid, in necp_client_trace_parsed_parameters()
2970 parsed_parameters->uid, in necp_client_trace_parsed_parameters()
2971 parsed_parameters->persona_id, in necp_client_trace_parsed_parameters()
2972 parsed_parameters->traffic_class); in necp_client_trace_parsed_parameters()
2975 parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_KNOWN_TRACKER, in necp_client_trace_parsed_parameters()
2976 parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_NON_APP_INITIATED, in necp_client_trace_parsed_parameters()
2977 parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_SILENT, in necp_client_trace_parsed_parameters()
2978 parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_APPROVED_APP_DOMAIN); in necp_client_trace_parsed_parameters()
2980 …for (i = 0; i < NECP_MAX_INTERFACE_PARAMETERS && parsed_parameters->prohibited_interfaces[i][0]; i… in necp_client_trace_parsed_parameters()
2981 …NECP_CLIENT_PARAMS_LOG(client, "Parsed prohibited_interfaces[%d] <%s>", i, parsed_parameters->proh… in necp_client_trace_parsed_parameters()
2984 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && parsed_parameters->required_netagent_types[i].netagen… in necp_client_trace_parsed_parameters()
2986 parsed_parameters->required_netagent_types[i].netagent_domain, in necp_client_trace_parsed_parameters()
2987 parsed_parameters->required_netagent_types[i].netagent_type); in necp_client_trace_parsed_parameters()
2989 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && parsed_parameters->prohibited_netagent_types[i].netag… in necp_client_trace_parsed_parameters()
2991 parsed_parameters->prohibited_netagent_types[i].netagent_domain, in necp_client_trace_parsed_parameters()
2992 parsed_parameters->prohibited_netagent_types[i].netagent_type); in necp_client_trace_parsed_parameters()
2994 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && parsed_parameters->preferred_netagent_types[i].netage… in necp_client_trace_parsed_parameters()
2996 parsed_parameters->preferred_netagent_types[i].netagent_domain, in necp_client_trace_parsed_parameters()
2997 parsed_parameters->preferred_netagent_types[i].netagent_type); in necp_client_trace_parsed_parameters()
2999 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && parsed_parameters->avoided_netagent_types[i].netagent… in necp_client_trace_parsed_parameters()
3001 parsed_parameters->avoided_netagent_types[i].netagent_domain, in necp_client_trace_parsed_parameters()
3002 parsed_parameters->avoided_netagent_types[i].netagent_type); in necp_client_trace_parsed_parameters()
3005 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && !uuid_is_null(parsed_parameters->required_netagents[i… in necp_client_trace_parsed_parameters()
3006 uuid_unparse_lower(parsed_parameters->required_netagents[i], uuid_str); in necp_client_trace_parsed_parameters()
3009 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && !uuid_is_null(parsed_parameters->prohibited_netagents… in necp_client_trace_parsed_parameters()
3010 uuid_unparse_lower(parsed_parameters->prohibited_netagents[i], uuid_str); in necp_client_trace_parsed_parameters()
3013 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && !uuid_is_null(parsed_parameters->preferred_netagents[… in necp_client_trace_parsed_parameters()
3014 uuid_unparse_lower(parsed_parameters->preferred_netagents[i], uuid_str); in necp_client_trace_parsed_parameters()
3017 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && !uuid_is_null(parsed_parameters->avoided_netagents[i]… in necp_client_trace_parsed_parameters()
3018 uuid_unparse_lower(parsed_parameters->avoided_netagents[i], uuid_str); in necp_client_trace_parsed_parameters()
3041 struct necp_client_parsed_parameters *parsed_parameters) in necp_client_parse_parameters() argument
3062 if (parsed_parameters == NULL) { in necp_client_parse_parameters()
3066 memset(parsed_parameters, 0, sizeof(struct necp_client_parsed_parameters)); in necp_client_parse_parameters()
3089 parsed_parameters->required_interface_index = bound_interface->if_index; in necp_client_parse_parameters()
3090 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IF; in necp_client_parse_parameters()
3100 parsed_parameters->local_addr.sin6 = address_struct->address.sin6; in necp_client_parse_parameters()
3101 if (!necp_address_is_wildcard(&parsed_parameters->local_addr)) { in necp_client_parse_parameters()
3102 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_LOCAL_ADDR; in necp_client_parse_parameters()
3104 …if ((parsed_parameters->local_addr.sa.sa_family == AF_INET && parsed_parameters->local_addr.sin.si… in necp_client_parse_parameters()
3105 …(parsed_parameters->local_addr.sa.sa_family == AF_INET6 && parsed_parameters->local_addr.sin6.sin6… in necp_client_parse_parameters()
3106 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_LOCAL_PORT; in necp_client_parse_parameters()
3116 parsed_parameters->local_addr.sin6 = endpoint->u.sin6; in necp_client_parse_parameters()
3117 if (!necp_address_is_wildcard(&parsed_parameters->local_addr)) { in necp_client_parse_parameters()
3118 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_LOCAL_ADDR; in necp_client_parse_parameters()
3120 …if ((parsed_parameters->local_addr.sa.sa_family == AF_INET && parsed_parameters->local_addr.sin.si… in necp_client_parse_parameters()
3121 …(parsed_parameters->local_addr.sa.sa_family == AF_INET6 && parsed_parameters->local_addr.sin6.sin6… in necp_client_parse_parameters()
3122 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_LOCAL_PORT; in necp_client_parse_parameters()
3132 parsed_parameters->remote_addr.sin6 = address_struct->address.sin6; in necp_client_parse_parameters()
3133 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REMOTE_ADDR; in necp_client_parse_parameters()
3142 parsed_parameters->remote_addr.sin6 = endpoint->u.sin6; in necp_client_parse_parameters()
3143 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REMOTE_ADDR; in necp_client_parse_parameters()
3153 memcpy(parsed_parameters->prohibited_interfaces[num_prohibited_interfaces], value, length); in necp_client_parse_parameters()
3154parsed_parameters->prohibited_interfaces[num_prohibited_interfaces][length - 1] = 0; // Ma… in necp_client_parse_parameters()
3156 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_IF; in necp_client_parse_parameters()
3161 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IFTYPE) { in necp_client_parse_parameters()
3165 memcpy(&parsed_parameters->required_interface_type, value, sizeof(u_int8_t)); in necp_client_parse_parameters()
3166 if (parsed_parameters->required_interface_type) { in necp_client_parse_parameters()
3167 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IFTYPE; in necp_client_parse_parameters()
3177 …memcpy(&parsed_parameters->prohibited_interface_types[num_prohibited_interface_types], value, size… in necp_client_parse_parameters()
3179 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_IFTYPE; in necp_client_parse_parameters()
3188 memcpy(&parsed_parameters->required_netagents[num_required_agents], value, sizeof(uuid_t)); in necp_client_parse_parameters()
3190 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT; in necp_client_parse_parameters()
3199 … memcpy(&parsed_parameters->prohibited_netagents[num_prohibited_agents], value, sizeof(uuid_t)); in necp_client_parse_parameters()
3201 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_AGENT; in necp_client_parse_parameters()
3210 memcpy(&parsed_parameters->preferred_netagents[num_preferred_agents], value, sizeof(uuid_t)); in necp_client_parse_parameters()
3212 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PREFERRED_AGENT; in necp_client_parse_parameters()
3221 memcpy(&parsed_parameters->avoided_netagents[num_avoided_agents], value, sizeof(uuid_t)); in necp_client_parse_parameters()
3223 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_AVOIDED_AGENT; in necp_client_parse_parameters()
3232 …memcpy(&parsed_parameters->required_netagent_types[num_required_agent_types], value, sizeof(struct… in necp_client_parse_parameters()
3234 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT_TYPE; in necp_client_parse_parameters()
3243 …memcpy(&parsed_parameters->prohibited_netagent_types[num_prohibited_agent_types], value, sizeof(st… in necp_client_parse_parameters()
3245 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_AGENT_TYPE; in necp_client_parse_parameters()
3254 …memcpy(&parsed_parameters->preferred_netagent_types[num_preferred_agent_types], value, sizeof(stru… in necp_client_parse_parameters()
3256 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PREFERRED_AGENT_TYPE; in necp_client_parse_parameters()
3265 …memcpy(&parsed_parameters->avoided_netagent_types[num_avoided_agent_types], value, sizeof(struct n… in necp_client_parse_parameters()
3267 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_AVOIDED_AGENT_TYPE; in necp_client_parse_parameters()
3273 memcpy(&parsed_parameters->flags, value, sizeof(parsed_parameters->flags)); in necp_client_parse_parameters()
3274 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_FLAGS; in necp_client_parse_parameters()
3282 parsed_parameters->ip_protocol = (u_int8_t)large_ip_protocol; in necp_client_parse_parameters()
3283 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_IP_PROTOCOL; in necp_client_parse_parameters()
3284 } else if (length >= sizeof(parsed_parameters->ip_protocol)) { in necp_client_parse_parameters()
3285 memcpy(&parsed_parameters->ip_protocol, value, sizeof(parsed_parameters->ip_protocol)); in necp_client_parse_parameters()
3286 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_IP_PROTOCOL; in necp_client_parse_parameters()
3291 if (length >= sizeof(parsed_parameters->transport_protocol)) { in necp_client_parse_parameters()
3292 …memcpy(&parsed_parameters->transport_protocol, value, sizeof(parsed_parameters->transport_protocol… in necp_client_parse_parameters()
3293 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_TRANSPORT_PROTOCOL; in necp_client_parse_parameters()
3298 if (length >= sizeof(parsed_parameters->effective_pid)) { in necp_client_parse_parameters()
3299 memcpy(&parsed_parameters->effective_pid, value, sizeof(parsed_parameters->effective_pid)); in necp_client_parse_parameters()
3300 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_EFFECTIVE_PID; in necp_client_parse_parameters()
3305 if (length >= sizeof(parsed_parameters->delegated_upid)) { in necp_client_parse_parameters()
3306 memcpy(&parsed_parameters->delegated_upid, value, sizeof(parsed_parameters->delegated_upid)); in necp_client_parse_parameters()
3307 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_DELEGATED_UPID; in necp_client_parse_parameters()
3312 if (length >= sizeof(parsed_parameters->ethertype)) { in necp_client_parse_parameters()
3313 memcpy(&parsed_parameters->ethertype, value, sizeof(parsed_parameters->ethertype)); in necp_client_parse_parameters()
3314 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_ETHERTYPE; in necp_client_parse_parameters()
3319 if (length >= sizeof(parsed_parameters->effective_uuid)) { in necp_client_parse_parameters()
3320 memcpy(&parsed_parameters->effective_uuid, value, sizeof(parsed_parameters->effective_uuid)); in necp_client_parse_parameters()
3321 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_EFFECTIVE_UUID; in necp_client_parse_parameters()
3326 if (length >= sizeof(parsed_parameters->traffic_class)) { in necp_client_parse_parameters()
3327 memcpy(&parsed_parameters->traffic_class, value, sizeof(parsed_parameters->traffic_class)); in necp_client_parse_parameters()
3328 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_TRAFFIC_CLASS; in necp_client_parse_parameters()
3355 memcpy(&parsed_parameters->parent_uuid, value, sizeof(parsed_parameters->parent_uuid)); in necp_client_parse_parameters()
3356 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PARENT_UUID; in necp_client_parse_parameters()
3361 if (length >= sizeof(parsed_parameters->local_address_preference)) { in necp_client_parse_parameters()
3362 …memcpy(&parsed_parameters->local_address_preference, value, sizeof(parsed_parameters->local_addres… in necp_client_parse_parameters()
3363 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_LOCAL_ADDR_PREFERENCE; in necp_client_parse_parameters()
3369 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_ATTRIBUTED_BUNDLE_IDENTIFIER; in necp_client_parse_parameters()
3374 if (parsed_parameters->demux_pattern_count >= NECP_MAX_DEMUX_PATTERNS) { in necp_client_parse_parameters()
3378 …memcpy(&parsed_parameters->demux_patterns[parsed_parameters->demux_pattern_count], value, sizeof(s… in necp_client_parse_parameters()
3379 parsed_parameters->demux_pattern_count++; in necp_client_parse_parameters()
3380 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_FLOW_DEMUX_PATTERN; in necp_client_parse_parameters()
3388 parsed_parameters->uid = application_id->uid; in necp_client_parse_parameters()
3389 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_UID; in necp_client_parse_parameters()
3391 uuid_copy(parsed_parameters->effective_uuid, application_id->effective_uuid); in necp_client_parse_parameters()
3392 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_EFFECTIVE_UUID; in necp_client_parse_parameters()
3394 parsed_parameters->persona_id = application_id->persona_id; in necp_client_parse_parameters()
3395 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PERSONA_ID; in necp_client_parse_parameters()
3401 memcpy(&parsed_parameters->extended_flags, value, sizeof(parsed_parameters->extended_flags)); in necp_client_parse_parameters()
3402 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_EXTENDED_FLAGS; in necp_client_parse_parameters()
3458 …} else if (answer_struct->address_answer.sa.sa_family != parsed_parameters->remote_addr.sa.sa_fami… in necp_client_parse_parameters()
3459 answer_struct->address_answer.sa.sa_len != parsed_parameters->remote_addr.sa.sa_len) { in necp_client_parse_parameters()
3463 … answer_struct->address_answer.sin.sin_port != parsed_parameters->remote_addr.sin.sin_port) { in necp_client_parse_parameters()
3467 …answer_struct->address_answer.sin.sin_addr.s_addr != parsed_parameters->remote_addr.sin.sin_addr.s… in necp_client_parse_parameters()
3469 …memcmp(&sin6.sin6_addr, &parsed_parameters->remote_addr.sin6.sin6_addr, sizeof(struct in6_addr)) !… in necp_client_parse_parameters()
3527 necp_client_trace_parsed_parameters(client, parsed_parameters); in necp_client_parse_parameters()
4210 struct necp_client_parsed_parameters * __single parsed_parameters = NULL; in necp_socket_is_allowed_to_recv_on_interface() local
4212 parsed_parameters = kalloc_type(struct necp_client_parsed_parameters, in necp_socket_is_allowed_to_recv_on_interface()
4214 …se_parameters(client, client->parameters, (u_int32_t)client->parameters_length, parsed_parameters); in necp_socket_is_allowed_to_recv_on_interface()
4216 if (!necp_ifnet_matches_parameters(interface, parsed_parameters, 0, NULL, true, false)) { in necp_socket_is_allowed_to_recv_on_interface()
4220 kfree_type(struct necp_client_parsed_parameters, parsed_parameters); in necp_socket_is_allowed_to_recv_on_interface()
4474 necp_update_parsed_parameters(struct necp_client_parsed_parameters *parsed_parameters, in necp_update_parsed_parameters() argument
4477 if (parsed_parameters == NULL || in necp_update_parsed_parameters()
4495 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT) { in necp_update_parsed_parameters()
4498 if (uuid_compare(parsed_parameters->required_netagents[j], result->netagents[i]) == 0) { in necp_update_parsed_parameters()
4502 if (uuid_is_null(parsed_parameters->required_netagents[j])) { in necp_update_parsed_parameters()
4504 memcpy(&parsed_parameters->required_netagents[j], result->netagents[i], sizeof(uuid_t)); in necp_update_parsed_parameters()
4511 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT; in necp_update_parsed_parameters()
4512 memcpy(&parsed_parameters->required_netagents[0], result->netagents[i], sizeof(uuid_t)); in necp_update_parsed_parameters()
4517 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT_TYPE) { in necp_update_parsed_parameters()
4522 …if (strbuflen(parsed_parameters->required_netagent_types[j].netagent_domain, sizeof(parsed_paramet… in necp_update_parsed_parameters()
4523 …strbuflen(parsed_parameters->required_netagent_types[j].netagent_type, sizeof(parsed_parameters->r… in necp_update_parsed_parameters()
4527 …if (strbufcmp(parsed_parameters->required_netagent_types[j].netagent_domain, sizeof(parsed_paramet… in necp_update_parsed_parameters()
4528 …strbufcmp(parsed_parameters->required_netagent_types[j].netagent_type, sizeof(parsed_parameters->r… in necp_update_parsed_parameters()
4533 …memset(&parsed_parameters->required_netagent_types[NECP_MAX_AGENT_PARAMETERS - 1], 0, sizeof(struc… in necp_update_parsed_parameters()
4537 memmove(&parsed_parameters->required_netagent_types[j], in necp_update_parsed_parameters()
4538 &parsed_parameters->required_netagent_types[j + 1], in necp_update_parsed_parameters()
4540 …memset(&parsed_parameters->required_netagent_types[NECP_MAX_AGENT_PARAMETERS - 1], 0, sizeof(struc… in necp_update_parsed_parameters()
4554 parsed_parameters->required_interface_index != IFSCOPE_NONE && in necp_update_parsed_parameters()
4555 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IF) == 0) { in necp_update_parsed_parameters()
4557 parsed_parameters->required_interface_index = IFSCOPE_NONE; in necp_update_parsed_parameters()
4577 struct necp_client_parsed_parameters *parsed_parameters, in necp_calculate_client_result() argument
4590 if (necp_find_matching_interface_index(parsed_parameters, &matching_if_index, &validate_agents)) { in necp_calculate_client_result()
4592 parsed_parameters->required_interface_index = matching_if_index; in necp_calculate_client_result()
4612 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT) { in necp_calculate_client_result()
4614 if (uuid_is_null(parsed_parameters->required_netagents[i])) { in necp_calculate_client_result()
4629 if (uuid_compare(parsed_parameters->required_netagents[i], result->netagents[j]) == 0) { in necp_calculate_client_result()
4642 …if (!requirement_failed && parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED… in necp_calculate_client_result()
4644 …if (strbuflen(parsed_parameters->required_netagent_types[i].netagent_domain, sizeof(parsed_paramet… in necp_calculate_client_result()
4645 …strbuflen(parsed_parameters->required_netagent_types[i].netagent_type, sizeof(parsed_parameters->r… in necp_calculate_client_result()
4664 if (necp_agent_types_match(parsed_parameters->required_netagent_types[i].netagent_domain, in necp_calculate_client_result()
4665 parsed_parameters->required_netagent_types[i].netagent_type, in necp_calculate_client_result()
4742 struct necp_client_parsed_parameters * __single parsed_parameters = NULL; in necp_update_client_result() local
4748 parsed_parameters = kalloc_type(struct necp_client_parsed_parameters, in necp_update_client_result()
4754 …se_parameters(client, client->parameters, (u_int32_t)client->parameters_length, parsed_parameters); in necp_update_client_result()
4756 kfree_type(struct necp_client_parsed_parameters, parsed_parameters); in necp_update_client_result()
4759 bool originally_scoped = (parsed_parameters->required_interface_index != IFSCOPE_NONE); in necp_update_client_result()
4762 client->ip_protocol = parsed_parameters->ip_protocol; in necp_update_client_result()
4769 …if (!necp_calculate_client_result(proc, client, parsed_parameters, &result, &flags, &reason, &v4_g… in necp_update_client_result()
4770 kfree_type(struct necp_client_parsed_parameters, parsed_parameters); in necp_update_client_result()
4774 if (necp_update_parsed_parameters(parsed_parameters, &result)) { in necp_update_client_result()
4776 …if (!necp_calculate_client_result(proc, client, parsed_parameters, &result, &flags, &reason, &v4_g… in necp_update_client_result()
4777 kfree_type(struct necp_client_parsed_parameters, parsed_parameters); in necp_update_client_result()
4782 if ((parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER) && in necp_update_client_result()
4783 parsed_parameters->required_interface_index != IFSCOPE_NONE && in necp_update_client_result()
4784 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IF) == 0) { in necp_update_client_result()
4786 parsed_parameters->required_interface_index = IFSCOPE_NONE; in necp_update_client_result()
4794 if ((parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_MULTIPATH) || in necp_update_client_result()
4795 (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_BROWSE) || in necp_update_client_result()
4796 ((parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER) && in necp_update_client_result()
4807 parsed_parameters->required_interface_index == result.routed_interface_index) { in necp_update_client_result()
4819 if (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER) { in necp_update_client_result()
4863 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_REQUIRED_FIELDS) && in necp_update_client_result()
4864 parsed_parameters->required_interface_index != IFSCOPE_NONE && in necp_update_client_result()
4865 parsed_parameters->required_interface_index != result.routed_interface_index) { in necp_update_client_result()
4866 routed_interface_index = parsed_parameters->required_interface_index; in necp_update_client_result()
4912 bool has_remote_addr = parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REMOTE_ADDR; in necp_update_client_result()
4983 …if (necp_netagent_applies_to_client(client, parsed_parameters, &netagent.netagent_uuid, TRUE, 0, 0… in necp_update_client_result()
4996 } else if (parsed_parameters->required_interface_index != IFSCOPE_NONE && in necp_update_client_result()
4997 parsed_parameters->required_interface_index <= (u_int32_t)if_index) { in necp_update_client_result()
4999 direct_interface = ifindex2ifnet[parsed_parameters->required_interface_index]; in necp_update_client_result()
5009 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_REQUIRED_FIELDS) && in necp_update_client_result()
5010 parsed_parameters->required_interface_index != IFSCOPE_NONE && in necp_update_client_result()
5011parsed_parameters->required_interface_index != result.routing_result_parameter.tunnel_interface_in… in necp_update_client_result()
5012 parsed_parameters->required_interface_index <= (u_int32_t)if_index) { in necp_update_client_result()
5013 original_scoped_interface = ifindex2ifnet[parsed_parameters->required_interface_index]; in necp_update_client_result()
5049 …if (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_MULTIPATH && !(parsed_parameters->flags … in necp_update_client_result()
5053 necp_client_add_agent_interface_options(client, parsed_parameters, direct_interface); in necp_update_client_result()
5059 if (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_INBOUND) { in necp_update_client_result()
5064 necp_ifnet_matches_parameters(multi_interface, parsed_parameters, 0, NULL, true, false)) { in necp_update_client_result()
5066 necp_client_add_agent_interface_options(client, parsed_parameters, multi_interface); in necp_update_client_result()
5074 necp_ifnet_matches_parameters(multi_interface, parsed_parameters, 0, NULL, true, false)) { in necp_update_client_result()
5076 necp_client_add_agent_interface_options(client, parsed_parameters, multi_interface); in necp_update_client_result()
5084 } else if (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER) { in necp_update_client_result()
5089 necp_client_add_agent_interface_options(client, parsed_parameters, direct_interface); in necp_update_client_result()
5100 necp_ifnet_matches_parameters(listen_interface, parsed_parameters, 0, NULL, true, false)) { in necp_update_client_result()
5102 necp_client_add_agent_interface_options(client, parsed_parameters, listen_interface); in necp_update_client_result()
5106 } else if (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_BROWSE) { in necp_update_client_result()
5110 necp_client_add_browse_interface_options(client, parsed_parameters, direct_interface); in necp_update_client_result()
5116 if (necp_ifnet_matches_parameters(browse_interface, parsed_parameters, 0, NULL, true, false)) { in necp_update_client_result()
5117 necp_client_add_browse_interface_options(client, parsed_parameters, browse_interface); in necp_update_client_result()
5158 if (necp_netagent_applies_to_client(client, parsed_parameters, &netagent.netagent_uuid, FALSE, in necp_update_client_result()
5197 if (necp_netagent_applies_to_client(client, parsed_parameters, &netagent.netagent_uuid, TRUE, in necp_update_client_result()
5238 if (necp_netagent_applies_to_client(client, parsed_parameters, &netagent.netagent_uuid, FALSE, in necp_update_client_result()
5283 kfree_type(struct necp_client_parsed_parameters, parsed_parameters); in necp_update_client_result()
5921 struct necp_client_parsed_parameters *parsed_parameters, in necp_ifnet_matches_parameters() argument
5933 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IF) { in necp_ifnet_matches_parameters()
5934 if (parsed_parameters->required_interface_index != ifp->if_index) { in necp_ifnet_matches_parameters()
5946 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_LOCAL_ADDR) { in necp_ifnet_matches_parameters()
5947 if (!necp_ifnet_matches_local_address(ifp, SA(&parsed_parameters->local_addr.sa))) { in necp_ifnet_matches_parameters()
5955 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) { in necp_ifnet_matches_parameters()
5970 if ((parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_PROHIBIT_EXPENSIVE) && in necp_ifnet_matches_parameters()
5974 if ((parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_PROHIBIT_CONSTRAINED) && in necp_ifnet_matches_parameters()
5978 if (!(parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_ALLOW_ULTRA_CONSTRAINED) && in necp_ifnet_matches_parameters()
5986 …!(parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) || // or if there are… in necp_ifnet_matches_parameters()
5987 …!(parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_ONLY_PRIMARY_REQUIRES_TYPE)) && // or… in necp_ifnet_matches_parameters()
5988 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IFTYPE) && in necp_ifnet_matches_parameters()
5989 !necp_ifnet_matches_type(ifp, parsed_parameters->required_interface_type, FALSE)) { in necp_ifnet_matches_parameters()
5993 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IFTYPE) { in necp_ifnet_matches_parameters()
5999 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_IFTYPE) { in necp_ifnet_matches_parameters()
6001 if (parsed_parameters->prohibited_interface_types[i] == 0) { in necp_ifnet_matches_parameters()
6005 if (necp_ifnet_matches_type(ifp, parsed_parameters->prohibited_interface_types[i], TRUE)) { in necp_ifnet_matches_parameters()
6011 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_IF) { in necp_ifnet_matches_parameters()
6013 …if (strbuflen(parsed_parameters->prohibited_interfaces[i], sizeof(parsed_parameters->prohibited_in… in necp_ifnet_matches_parameters()
6017 if (necp_ifnet_matches_name(ifp, parsed_parameters->prohibited_interfaces[i], TRUE)) { in necp_ifnet_matches_parameters()
6023 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT) { in necp_ifnet_matches_parameters()
6025 if (uuid_is_null(parsed_parameters->required_netagents[i])) { in necp_ifnet_matches_parameters()
6029 if (!necp_ifnet_matches_agent(ifp, &parsed_parameters->required_netagents[i], FALSE)) { in necp_ifnet_matches_parameters()
6039 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_AGENT) { in necp_ifnet_matches_parameters()
6041 if (uuid_is_null(parsed_parameters->prohibited_netagents[i])) { in necp_ifnet_matches_parameters()
6045 if (necp_ifnet_matches_agent(ifp, &parsed_parameters->prohibited_netagents[i], TRUE)) { in necp_ifnet_matches_parameters()
6051 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT_TYPE) { in necp_ifnet_matches_parameters()
6053 …if (strbuflen(parsed_parameters->required_netagent_types[i].netagent_domain, sizeof(parsed_paramet… in necp_ifnet_matches_parameters()
6054 …strbuflen(parsed_parameters->required_netagent_types[i].netagent_type, sizeof(parsed_parameters->r… in necp_ifnet_matches_parameters()
6058 …!necp_ifnet_matches_agent_type(ifp, parsed_parameters->required_netagent_types[i].netagent_domain,… in necp_ifnet_matches_parameters()
6068 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_AGENT_TYPE) { in necp_ifnet_matches_parameters()
6070 …if (strbuflen(parsed_parameters->prohibited_netagent_types[i].netagent_domain, sizeof(parsed_param… in necp_ifnet_matches_parameters()
6071 …strbuflen(parsed_parameters->prohibited_netagent_types[i].netagent_type, sizeof(parsed_parameters-… in necp_ifnet_matches_parameters()
6075 …necp_ifnet_matches_agent_type(ifp, parsed_parameters->prohibited_netagent_types[i].netagent_domain… in necp_ifnet_matches_parameters()
6083 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_PREFERRED_AGENT) { in necp_ifnet_matches_parameters()
6085 if (uuid_is_null(parsed_parameters->preferred_netagents[i])) { in necp_ifnet_matches_parameters()
6089 if (necp_ifnet_matches_agent(ifp, &parsed_parameters->preferred_netagents[i], TRUE)) { in necp_ifnet_matches_parameters()
6098 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_PREFERRED_AGENT_TYPE) { in necp_ifnet_matches_parameters()
6100 …if (strbuflen(parsed_parameters->preferred_netagent_types[i].netagent_domain, sizeof(parsed_parame… in necp_ifnet_matches_parameters()
6101 …strbuflen(parsed_parameters->preferred_netagent_types[i].netagent_type, sizeof(parsed_parameters->… in necp_ifnet_matches_parameters()
6105 …(necp_ifnet_matches_agent_type(ifp, parsed_parameters->preferred_netagent_types[i].netagent_domain… in necp_ifnet_matches_parameters()
6114 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_AVOIDED_AGENT) { in necp_ifnet_matches_parameters()
6116 if (uuid_is_null(parsed_parameters->avoided_netagents[i])) { in necp_ifnet_matches_parameters()
6120 if (!necp_ifnet_matches_agent(ifp, &parsed_parameters->avoided_netagents[i], TRUE)) { in necp_ifnet_matches_parameters()
6126 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_AVOIDED_AGENT_TYPE) { in necp_ifnet_matches_parameters()
6128 …if (strbuflen(parsed_parameters->avoided_netagent_types[i].netagent_domain, sizeof(parsed_paramete… in necp_ifnet_matches_parameters()
6129 …strbuflen(parsed_parameters->avoided_netagent_types[i].netagent_type, sizeof(parsed_parameters->av… in necp_ifnet_matches_parameters()
6133 …if (!necp_ifnet_matches_agent_type(ifp, parsed_parameters->avoided_netagent_types[i].netagent_doma… in necp_ifnet_matches_parameters()
6134 parsed_parameters->avoided_netagent_types[i].netagent_type, TRUE)) { in necp_ifnet_matches_parameters()
6149 necp_find_matching_interface_index(struct necp_client_parsed_parameters *parsed_parameters, in necp_find_matching_interface_index() argument
6157 if (parsed_parameters->required_interface_index != 0) { in necp_find_matching_interface_index()
6158 *return_ifindex = parsed_parameters->required_interface_index; in necp_find_matching_interface_index()
6165 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) { in necp_find_matching_interface_index()
6166 flags = parsed_parameters->flags; in necp_find_matching_interface_index()
6167 has_prohibit_flags = (parsed_parameters->flags & in necp_find_matching_interface_index()
6172 if (!(parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_INTERESTING_IFNET_FIELDS) && in necp_find_matching_interface_index()
6177 has_preferred_fields = (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_PREFERRED_FIELDS); in necp_find_matching_interface_index()
6182 if (!(parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_SCOPED_FIELDS) && 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()
6193 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REMOTE_ADDR && in necp_find_matching_interface_index()
6194 parsed_parameters->remote_addr.sin6.sin6_family == AF_INET6 && in necp_find_matching_interface_index()
6195 parsed_parameters->remote_addr.sin6.sin6_scope_id != IFSCOPE_NONE && in necp_find_matching_interface_index()
6196 parsed_parameters->remote_addr.sin6.sin6_scope_id <= (u_int32_t)if_index) { in necp_find_matching_interface_index()
6197 ifp = ifindex2ifnet[parsed_parameters->remote_addr.sin6.sin6_scope_id]; in necp_find_matching_interface_index()
6198 … if (ifp != NULL && necp_ifnet_matches_parameters(ifp, parsed_parameters, 0, NULL, false, false)) { in necp_find_matching_interface_index()
6210 …if (necp_ifnet_matches_parameters(ifp, parsed_parameters, flags, &preferred_count, false, false)) { in necp_find_matching_interface_index()
6233 bool is_listener = ((parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) && in necp_find_matching_interface_index()
6234 (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER)); in necp_find_matching_interface_index()
6237 if ((parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_SCOPED_FIELDS) && in necp_find_matching_interface_index()
6238 ((!(parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IFTYPE)) || in necp_find_matching_interface_index()
6239 …necp_interface_type_should_match_unranked_interfaces(parsed_parameters->required_interface_type) || in necp_find_matching_interface_index()
6240 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_LOCAL_ADDR) || in necp_find_matching_interface_index()
6249 … if (necp_ifnet_matches_parameters(ifp, parsed_parameters, flags, &preferred_count, false, true)) { in necp_find_matching_interface_index()
6267 …((parsed_parameters->valid_fields & (NECP_PARSED_PARAMETERS_SCOPED_FIELDS | NECP_PARSED_PARAMETERS… in necp_find_matching_interface_index()
6268 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_PREFERRED_FIELDS))) { in necp_find_matching_interface_index()
6275 !(parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_SCOPED_IFNET_FIELDS)) { in necp_find_matching_interface_index()
7867 struct necp_client_parsed_parameters parsed_parameters = {}; in necp_client_add() local
7868 …e_parameters(client, client->parameters, (u_int32_t)client->parameters_length, &parsed_parameters); in necp_client_add()
7871 ((parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_DELEGATED_UPID) || in necp_client_add()
7872 … (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_ATTRIBUTED_BUNDLE_IDENTIFIER))) { in necp_client_add()
7875 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_DELEGATED_UPID) { in necp_client_add()
7879 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_ATTRIBUTED_BUNDLE_IDENTIFIER) { in necp_client_add()
7887 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_DELEGATED_UPID) { in necp_client_add()
7889 client->delegated_upid = parsed_parameters.delegated_upid; in necp_client_add()
7893 if (parse_error == 0 && parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_INTERPOSE) { in necp_client_add()
7903 if (parse_error == 0 && (parsed_parameters.flags & in necp_client_add()
7914 …if (parse_error == 0 && (parsed_parameters.extended_flags & NECP_CLIENT_PARAMETER_EXTENDED_FLAG_AO… in necp_client_add()
7923 if ((parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_MULTIPATH) || in necp_client_add()
7924 (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_BROWSE) || in necp_client_add()
7925 (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER)) { in necp_client_add()
7932 if (parse_error == 0 && parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER && in necp_client_add()
7933 … (parsed_parameters.ip_protocol == IPPROTO_TCP || parsed_parameters.ip_protocol == IPPROTO_UDP)) { in necp_client_add()
7939 flow_info.nfi_protocol = parsed_parameters.ip_protocol; in necp_client_add()
7941 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_EFFECTIVE_PID) { in necp_client_add()
7942 flow_info.nfi_effective_pid = parsed_parameters.effective_pid; in necp_client_add()
7949 if (parsed_parameters.local_addr.sa.sa_family == AF_UNSPEC) { in necp_client_add()
7952 parsed_parameters.local_addr.sin6.sin6_family = AF_INET6; in necp_client_add()
7953 parsed_parameters.local_addr.sin6.sin6_len = sizeof(struct sockaddr_in6); in necp_client_add()
7956 switch (parsed_parameters.local_addr.sa.sa_family) { in necp_client_add()
7958 …memcpy(&flow_info.nfi_laddr, &parsed_parameters.local_addr.sa, parsed_parameters.local_addr.sa.sa_… in necp_client_add()
7959 netns_addr = (uint32_t *)&parsed_parameters.local_addr.sin.sin_addr; in necp_client_add()
7964 …memcpy(&flow_info.nfi_laddr.sin6, &parsed_parameters.local_addr.sin6, parsed_parameters.local_addr… in necp_client_add()
7965 netns_addr = (uint32_t *)&parsed_parameters.local_addr.sin6.sin6_addr; in necp_client_add()
7971 …NECPLOG(LOG_ERR, "necp_client_add listener invalid address family (%d)", parsed_parameters.local_a… in necp_client_add()
7976 if ((parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) && in necp_client_add()
7977 (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_REUSE_LOCAL)) { in necp_client_add()
7980 if (parsed_parameters.local_addr.sin.sin_port == 0) { in necp_client_add()
7981 …rve_ephemeral(&client->port_reservation, netns_addr, netns_addr_len, parsed_parameters.ip_protocol, in necp_client_add()
7982 &parsed_parameters.local_addr.sin.sin_port, netns_flags, &flow_info); in necp_client_add()
7989 …arameters(client->parameters, (u_int32_t)client->parameters_length, parsed_parameters.local_addr.s… in necp_client_add()
7991 …error = netns_reserve(&client->port_reservation, netns_addr, netns_addr_len, parsed_parameters.ip_… in necp_client_add()
7992 parsed_parameters.local_addr.sin.sin_port, netns_flags, &flow_info); in necp_client_add()
8005 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_PARENT_UUID) { in necp_client_add()
8010 parent = necp_client_fd_find_client_unlocked(fd_data, parsed_parameters.parent_uuid); in necp_client_add()
8014 uuid_copy(parent_client_id, parsed_parameters.parent_uuid); in necp_client_add()
8025 …if (parse_error == 0 && parent != NULL && parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_… in necp_client_add()
8027 if (parsed_parameters.demux_patterns[0].len == 0) { in necp_client_add()
8041 if (parsed_parameters.ip_protocol != IPPROTO_UDP) { in necp_client_add()
8043 parsed_parameters.ip_protocol); in necp_client_add()
8046 if (parsed_parameters.ip_protocol != parent_parameters.ip_protocol) { in necp_client_add()
8050 …if (parsed_parameters.local_addr.sa.sa_family != AF_INET && parsed_parameters.local_addr.sa.sa_fam… in necp_client_add()
8052 parsed_parameters.local_addr.sa.sa_family); in necp_client_add()
8055 if (parsed_parameters.local_addr.sa.sa_family != parsed_parameters.remote_addr.sa.sa_family) { in necp_client_add()
8059 if (parsed_parameters.local_addr.sa.sa_family != parent_parameters.local_addr.sa.sa_family) { in necp_client_add()
8063 …if (SOCKADDR_CMP(&parsed_parameters.local_addr.sa, &parent_parameters.local_addr.sa, parsed_parame… in necp_client_add()
8067 …if (SOCKADDR_CMP(&parsed_parameters.remote_addr.sa, &parent_parameters.remote_addr.sa, parsed_para… in necp_client_add()
8071 if (parsed_parameters.local_addr.sin.sin_port != parent_parameters.local_addr.sin.sin_port) { in necp_client_add()
8075 if (parsed_parameters.remote_addr.sin.sin_port != parent_parameters.remote_addr.sin.sin_port) { in necp_client_add()
8389 struct necp_client_parsed_parameters parsed_parameters; in necp_client_check_tcp_heuristics() local
8394 &parsed_parameters); in necp_client_check_tcp_heuristics()
8416 if ((parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_ECN_ENABLE) == in necp_client_check_tcp_heuristics()
8422 if ((parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_ECN_DISABLE) == in necp_client_check_tcp_heuristics()
8439 if ((parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_TFO_ENABLE) == in necp_client_check_tcp_heuristics()
9121 struct necp_client_parsed_parameters parsed_parameters = {}; in necp_client_copy_parameters_locked() local
9122 …e_parameters(client, client->parameters, (u_int32_t)client->parameters_length, &parsed_parameters); in necp_client_copy_parameters_locked()
9125 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_EFFECTIVE_PID) { in necp_client_copy_parameters_locked()
9126 parameters->epid = parsed_parameters.effective_pid; in necp_client_copy_parameters_locked()
9133 memcpy(&parameters->local_addr, &parsed_parameters.local_addr, sizeof(parameters->local_addr)); in necp_client_copy_parameters_locked()
9134 memcpy(&parameters->remote_addr, &parsed_parameters.remote_addr, sizeof(parameters->remote_addr)); in necp_client_copy_parameters_locked()
9135 parameters->ip_protocol = parsed_parameters.ip_protocol; in necp_client_copy_parameters_locked()
9136 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_TRANSPORT_PROTOCOL) { in necp_client_copy_parameters_locked()
9137 parameters->transport_protocol = parsed_parameters.transport_protocol; in necp_client_copy_parameters_locked()
9139 parameters->transport_protocol = parsed_parameters.ip_protocol; in necp_client_copy_parameters_locked()
9141 parameters->ethertype = parsed_parameters.ethertype; in necp_client_copy_parameters_locked()
9142 parameters->traffic_class = parsed_parameters.traffic_class; in necp_client_copy_parameters_locked()
9144 uuid_copy(parameters->euuid, parsed_parameters.effective_uuid); in necp_client_copy_parameters_locked()
9148 parameters->is_listener = (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER) ? 1 : 0; in necp_client_copy_parameters_locked()
9149 …parameters->is_interpose = (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_INTERPOSE) ? 1 : … in necp_client_copy_parameters_locked()
9150 …parameters->is_custom_ether = (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_CUSTOM_ETHER) … in necp_client_copy_parameters_locked()
9164 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_LOCAL_ADDR_PREFERENCE) { in necp_client_copy_parameters_locked()
9165 …if (parsed_parameters.local_address_preference == NECP_CLIENT_PARAMETER_LOCAL_ADDRESS_PREFERENCE_D… in necp_client_copy_parameters_locked()
9167 …} else if (parsed_parameters.local_address_preference == NECP_CLIENT_PARAMETER_LOCAL_ADDRESS_PREFE… in necp_client_copy_parameters_locked()
9170 …} else if (parsed_parameters.local_address_preference == NECP_CLIENT_PARAMETER_LOCAL_ADDRESS_PREFE… in necp_client_copy_parameters_locked()
9178 if ((parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) && in necp_client_copy_parameters_locked()
9179 (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_NO_WAKE_FROM_SLEEP)) { in necp_client_copy_parameters_locked()
9183 if ((parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) && in necp_client_copy_parameters_locked()
9184 (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_REUSE_LOCAL)) { in necp_client_copy_parameters_locked()
9190 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLOW_DEMUX_PATTERN) { in necp_client_copy_parameters_locked()
9191 if (parsed_parameters.demux_patterns[0].len == 0) { in necp_client_copy_parameters_locked()
9210 if (parsed_parameters.demux_pattern_count > 0) { in necp_client_copy_parameters_locked()
9211 for (int i = 0; i < parsed_parameters.demux_pattern_count; i++) { in necp_client_copy_parameters_locked()
9212 …memcpy(&parameters->demux_patterns[i], &parsed_parameters.demux_patterns[i], sizeof(struct necp_de… in necp_client_copy_parameters_locked()
9214 parameters->demux_pattern_count = parsed_parameters.demux_pattern_count; in necp_client_copy_parameters_locked()
9220 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_EXTENDED_FLAGS) { in necp_client_copy_parameters_locked()
9221 if (parsed_parameters.extended_flags & NECP_CLIENT_PARAMETER_EXTENDED_FLAG_AOP2_OFFLOAD) { in necp_client_copy_parameters_locked()
9942 struct necp_client_nexus_parameters parsed_parameters = {}; in necp_client_agent_action() local
9943 necp_client_copy_parameters_locked(client, &parsed_parameters); in necp_client_agent_action()
9952 (struct necp_client_agent_parameters *)&parsed_parameters, in necp_client_agent_action()