Lines Matching refs:parsed_parameters

363 necp_find_matching_interface_index(struct necp_client_parsed_parameters *parsed_parameters,
371 struct necp_client_parsed_parameters *parsed_parameters,
2581 const struct necp_client_parsed_parameters *parsed_parameters, in necp_client_add_agent_interface_options() argument
2595 (void)necp_netagent_applies_to_client(client, parsed_parameters, &ifp->if_agentids[i], TRUE, in necp_client_add_agent_interface_options()
2604 const struct necp_client_parsed_parameters *parsed_parameters, in necp_client_add_browse_interface_options() argument
2623 necp_netagent_is_requested(parsed_parameters, &ifp->if_agentids[i]))) { in necp_client_add_browse_interface_options()
2763 …sed_parameters(struct necp_client *client, struct necp_client_parsed_parameters *parsed_parameters) in necp_client_trace_parsed_parameters() argument
2769 uuid_unparse_lower(parsed_parameters->effective_uuid, uuid_str); in necp_client_trace_parsed_parameters()
2771 switch (parsed_parameters->local_addr.sa.sa_family) { in necp_client_trace_parsed_parameters()
2773 if (parsed_parameters->local_addr.sa.sa_len == sizeof(struct sockaddr_in)) { in necp_client_trace_parsed_parameters()
2774 struct sockaddr_in *addr = &parsed_parameters->local_addr.sin; in necp_client_trace_parsed_parameters()
2779 if (parsed_parameters->local_addr.sa.sa_len == sizeof(struct sockaddr_in6)) { in necp_client_trace_parsed_parameters()
2780 struct sockaddr_in6 *addr6 = &parsed_parameters->local_addr.sin6; in necp_client_trace_parsed_parameters()
2788 switch (parsed_parameters->remote_addr.sa.sa_family) { in necp_client_trace_parsed_parameters()
2790 if (parsed_parameters->remote_addr.sa.sa_len == sizeof(struct sockaddr_in)) { in necp_client_trace_parsed_parameters()
2791 struct sockaddr_in *addr = &parsed_parameters->remote_addr.sin; in necp_client_trace_parsed_parameters()
2796 if (parsed_parameters->remote_addr.sa.sa_len == sizeof(struct sockaddr_in6)) { in necp_client_trace_parsed_parameters()
2797 struct sockaddr_in6 *addr6 = &parsed_parameters->remote_addr.sin6; in necp_client_trace_parsed_parameters()
2808 parsed_parameters->valid_fields, in necp_client_trace_parsed_parameters()
2809 parsed_parameters->flags, in necp_client_trace_parsed_parameters()
2810 parsed_parameters->delegated_upid, in necp_client_trace_parsed_parameters()
2812 parsed_parameters->required_interface_index, in necp_client_trace_parsed_parameters()
2813 parsed_parameters->required_interface_type, in necp_client_trace_parsed_parameters()
2814 parsed_parameters->local_address_preference, in necp_client_trace_parsed_parameters()
2815 parsed_parameters->ip_protocol, in necp_client_trace_parsed_parameters()
2816 parsed_parameters->transport_protocol, in necp_client_trace_parsed_parameters()
2817 parsed_parameters->ethertype, in necp_client_trace_parsed_parameters()
2818 parsed_parameters->effective_pid, in necp_client_trace_parsed_parameters()
2820 parsed_parameters->uid, in necp_client_trace_parsed_parameters()
2821 parsed_parameters->persona_id, in necp_client_trace_parsed_parameters()
2822 parsed_parameters->traffic_class); in necp_client_trace_parsed_parameters()
2825 parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_KNOWN_TRACKER, in necp_client_trace_parsed_parameters()
2826 parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_NON_APP_INITIATED, in necp_client_trace_parsed_parameters()
2827 parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_SILENT, in necp_client_trace_parsed_parameters()
2828 parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_APPROVED_APP_DOMAIN); in necp_client_trace_parsed_parameters()
2830 …for (i = 0; i < NECP_MAX_INTERFACE_PARAMETERS && parsed_parameters->prohibited_interfaces[i][0]; i… in necp_client_trace_parsed_parameters()
2831 …NECP_CLIENT_PARAMS_LOG(client, "Parsed prohibited_interfaces[%d] <%s>", i, parsed_parameters->proh… in necp_client_trace_parsed_parameters()
2834 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && parsed_parameters->required_netagent_types[i].netagen… in necp_client_trace_parsed_parameters()
2836 parsed_parameters->required_netagent_types[i].netagent_domain, in necp_client_trace_parsed_parameters()
2837 parsed_parameters->required_netagent_types[i].netagent_type); in necp_client_trace_parsed_parameters()
2839 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && parsed_parameters->prohibited_netagent_types[i].netag… in necp_client_trace_parsed_parameters()
2841 parsed_parameters->prohibited_netagent_types[i].netagent_domain, in necp_client_trace_parsed_parameters()
2842 parsed_parameters->prohibited_netagent_types[i].netagent_type); in necp_client_trace_parsed_parameters()
2844 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && parsed_parameters->preferred_netagent_types[i].netage… in necp_client_trace_parsed_parameters()
2846 parsed_parameters->preferred_netagent_types[i].netagent_domain, in necp_client_trace_parsed_parameters()
2847 parsed_parameters->preferred_netagent_types[i].netagent_type); in necp_client_trace_parsed_parameters()
2849 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && parsed_parameters->avoided_netagent_types[i].netagent… in necp_client_trace_parsed_parameters()
2851 parsed_parameters->avoided_netagent_types[i].netagent_domain, in necp_client_trace_parsed_parameters()
2852 parsed_parameters->avoided_netagent_types[i].netagent_type); in necp_client_trace_parsed_parameters()
2855 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && !uuid_is_null(parsed_parameters->required_netagents[i… in necp_client_trace_parsed_parameters()
2856 uuid_unparse_lower(parsed_parameters->required_netagents[i], uuid_str); in necp_client_trace_parsed_parameters()
2859 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && !uuid_is_null(parsed_parameters->prohibited_netagents… in necp_client_trace_parsed_parameters()
2860 uuid_unparse_lower(parsed_parameters->prohibited_netagents[i], uuid_str); in necp_client_trace_parsed_parameters()
2863 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && !uuid_is_null(parsed_parameters->preferred_netagents[… in necp_client_trace_parsed_parameters()
2864 uuid_unparse_lower(parsed_parameters->preferred_netagents[i], uuid_str); in necp_client_trace_parsed_parameters()
2867 …for (i = 0; i < NECP_MAX_AGENT_PARAMETERS && !uuid_is_null(parsed_parameters->avoided_netagents[i]… in necp_client_trace_parsed_parameters()
2868 uuid_unparse_lower(parsed_parameters->avoided_netagents[i], uuid_str); in necp_client_trace_parsed_parameters()
2891 struct necp_client_parsed_parameters *parsed_parameters) in necp_client_parse_parameters() argument
2912 if (parsed_parameters == NULL) { in necp_client_parse_parameters()
2916 memset(parsed_parameters, 0, sizeof(struct necp_client_parsed_parameters)); in necp_client_parse_parameters()
2939 parsed_parameters->required_interface_index = bound_interface->if_index; in necp_client_parse_parameters()
2940 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IF; in necp_client_parse_parameters()
2950 parsed_parameters->local_addr.sin6 = address_struct->address.sin6; in necp_client_parse_parameters()
2951 if (!necp_address_is_wildcard(&parsed_parameters->local_addr)) { in necp_client_parse_parameters()
2952 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_LOCAL_ADDR; in necp_client_parse_parameters()
2954 …if ((parsed_parameters->local_addr.sa.sa_family == AF_INET && parsed_parameters->local_addr.sin.si… in necp_client_parse_parameters()
2955 …(parsed_parameters->local_addr.sa.sa_family == AF_INET6 && parsed_parameters->local_addr.sin6.sin6… in necp_client_parse_parameters()
2956 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_LOCAL_PORT; in necp_client_parse_parameters()
2966 parsed_parameters->local_addr.sin6 = endpoint->u.sin6; in necp_client_parse_parameters()
2967 if (!necp_address_is_wildcard(&parsed_parameters->local_addr)) { in necp_client_parse_parameters()
2968 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_LOCAL_ADDR; in necp_client_parse_parameters()
2970 …if ((parsed_parameters->local_addr.sa.sa_family == AF_INET && parsed_parameters->local_addr.sin.si… in necp_client_parse_parameters()
2971 …(parsed_parameters->local_addr.sa.sa_family == AF_INET6 && parsed_parameters->local_addr.sin6.sin6… in necp_client_parse_parameters()
2972 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_LOCAL_PORT; in necp_client_parse_parameters()
2982 parsed_parameters->remote_addr.sin6 = address_struct->address.sin6; in necp_client_parse_parameters()
2983 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REMOTE_ADDR; in necp_client_parse_parameters()
2992 parsed_parameters->remote_addr.sin6 = endpoint->u.sin6; in necp_client_parse_parameters()
2993 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REMOTE_ADDR; in necp_client_parse_parameters()
3003 memcpy(parsed_parameters->prohibited_interfaces[num_prohibited_interfaces], value, length); in necp_client_parse_parameters()
3004parsed_parameters->prohibited_interfaces[num_prohibited_interfaces][length - 1] = 0; // Ma… in necp_client_parse_parameters()
3006 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_IF; in necp_client_parse_parameters()
3011 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IFTYPE) { in necp_client_parse_parameters()
3015 memcpy(&parsed_parameters->required_interface_type, value, sizeof(u_int8_t)); in necp_client_parse_parameters()
3016 if (parsed_parameters->required_interface_type) { in necp_client_parse_parameters()
3017 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IFTYPE; in necp_client_parse_parameters()
3027 …memcpy(&parsed_parameters->prohibited_interface_types[num_prohibited_interface_types], value, size… in necp_client_parse_parameters()
3029 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_IFTYPE; in necp_client_parse_parameters()
3038 memcpy(&parsed_parameters->required_netagents[num_required_agents], value, sizeof(uuid_t)); in necp_client_parse_parameters()
3040 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT; in necp_client_parse_parameters()
3049 … memcpy(&parsed_parameters->prohibited_netagents[num_prohibited_agents], value, sizeof(uuid_t)); in necp_client_parse_parameters()
3051 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_AGENT; in necp_client_parse_parameters()
3060 memcpy(&parsed_parameters->preferred_netagents[num_preferred_agents], value, sizeof(uuid_t)); in necp_client_parse_parameters()
3062 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PREFERRED_AGENT; in necp_client_parse_parameters()
3071 memcpy(&parsed_parameters->avoided_netagents[num_avoided_agents], value, sizeof(uuid_t)); in necp_client_parse_parameters()
3073 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_AVOIDED_AGENT; in necp_client_parse_parameters()
3082 …memcpy(&parsed_parameters->required_netagent_types[num_required_agent_types], value, sizeof(struct… in necp_client_parse_parameters()
3084 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT_TYPE; in necp_client_parse_parameters()
3093 …memcpy(&parsed_parameters->prohibited_netagent_types[num_prohibited_agent_types], value, sizeof(st… in necp_client_parse_parameters()
3095 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_AGENT_TYPE; in necp_client_parse_parameters()
3104 …memcpy(&parsed_parameters->preferred_netagent_types[num_preferred_agent_types], value, sizeof(stru… in necp_client_parse_parameters()
3106 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PREFERRED_AGENT_TYPE; in necp_client_parse_parameters()
3115 …memcpy(&parsed_parameters->avoided_netagent_types[num_avoided_agent_types], value, sizeof(struct n… in necp_client_parse_parameters()
3117 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_AVOIDED_AGENT_TYPE; in necp_client_parse_parameters()
3123 memcpy(&parsed_parameters->flags, value, sizeof(parsed_parameters->flags)); in necp_client_parse_parameters()
3124 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_FLAGS; in necp_client_parse_parameters()
3132 parsed_parameters->ip_protocol = (u_int8_t)large_ip_protocol; in necp_client_parse_parameters()
3133 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_IP_PROTOCOL; in necp_client_parse_parameters()
3134 } else if (length >= sizeof(parsed_parameters->ip_protocol)) { in necp_client_parse_parameters()
3135 memcpy(&parsed_parameters->ip_protocol, value, sizeof(parsed_parameters->ip_protocol)); in necp_client_parse_parameters()
3136 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_IP_PROTOCOL; in necp_client_parse_parameters()
3141 if (length >= sizeof(parsed_parameters->transport_protocol)) { in necp_client_parse_parameters()
3142 …memcpy(&parsed_parameters->transport_protocol, value, sizeof(parsed_parameters->transport_protocol… in necp_client_parse_parameters()
3143 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_TRANSPORT_PROTOCOL; in necp_client_parse_parameters()
3148 if (length >= sizeof(parsed_parameters->effective_pid)) { in necp_client_parse_parameters()
3149 memcpy(&parsed_parameters->effective_pid, value, sizeof(parsed_parameters->effective_pid)); in necp_client_parse_parameters()
3150 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_EFFECTIVE_PID; in necp_client_parse_parameters()
3155 if (length >= sizeof(parsed_parameters->delegated_upid)) { in necp_client_parse_parameters()
3156 memcpy(&parsed_parameters->delegated_upid, value, sizeof(parsed_parameters->delegated_upid)); in necp_client_parse_parameters()
3157 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_DELEGATED_UPID; in necp_client_parse_parameters()
3162 if (length >= sizeof(parsed_parameters->ethertype)) { in necp_client_parse_parameters()
3163 memcpy(&parsed_parameters->ethertype, value, sizeof(parsed_parameters->ethertype)); in necp_client_parse_parameters()
3164 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_ETHERTYPE; in necp_client_parse_parameters()
3169 if (length >= sizeof(parsed_parameters->effective_uuid)) { in necp_client_parse_parameters()
3170 memcpy(&parsed_parameters->effective_uuid, value, sizeof(parsed_parameters->effective_uuid)); in necp_client_parse_parameters()
3171 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_EFFECTIVE_UUID; in necp_client_parse_parameters()
3176 if (length >= sizeof(parsed_parameters->traffic_class)) { in necp_client_parse_parameters()
3177 memcpy(&parsed_parameters->traffic_class, value, sizeof(parsed_parameters->traffic_class)); in necp_client_parse_parameters()
3178 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_TRAFFIC_CLASS; in necp_client_parse_parameters()
3205 memcpy(&parsed_parameters->parent_uuid, value, sizeof(parsed_parameters->parent_uuid)); in necp_client_parse_parameters()
3206 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PARENT_UUID; in necp_client_parse_parameters()
3211 if (length >= sizeof(parsed_parameters->local_address_preference)) { in necp_client_parse_parameters()
3212 …memcpy(&parsed_parameters->local_address_preference, value, sizeof(parsed_parameters->local_addres… in necp_client_parse_parameters()
3213 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_LOCAL_ADDR_PREFERENCE; in necp_client_parse_parameters()
3219 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_ATTRIBUTED_BUNDLE_IDENTIFIER; in necp_client_parse_parameters()
3224 if (parsed_parameters->demux_pattern_count >= NECP_MAX_DEMUX_PATTERNS) { in necp_client_parse_parameters()
3228 …memcpy(&parsed_parameters->demux_patterns[parsed_parameters->demux_pattern_count], value, sizeof(s… in necp_client_parse_parameters()
3229 parsed_parameters->demux_pattern_count++; in necp_client_parse_parameters()
3230 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_FLOW_DEMUX_PATTERN; in necp_client_parse_parameters()
3238 parsed_parameters->uid = application_id->uid; in necp_client_parse_parameters()
3239 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_UID; in necp_client_parse_parameters()
3241 uuid_copy(parsed_parameters->effective_uuid, application_id->effective_uuid); in necp_client_parse_parameters()
3242 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_EFFECTIVE_UUID; in necp_client_parse_parameters()
3244 parsed_parameters->persona_id = application_id->persona_id; in necp_client_parse_parameters()
3245 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_PERSONA_ID; in necp_client_parse_parameters()
3301 …} else if (answer_struct->address_answer.sa.sa_family != parsed_parameters->remote_addr.sa.sa_fami… in necp_client_parse_parameters()
3302 answer_struct->address_answer.sa.sa_len != parsed_parameters->remote_addr.sa.sa_len) { in necp_client_parse_parameters()
3306 … answer_struct->address_answer.sin.sin_port != parsed_parameters->remote_addr.sin.sin_port) { in necp_client_parse_parameters()
3310 …answer_struct->address_answer.sin.sin_addr.s_addr != parsed_parameters->remote_addr.sin.sin_addr.s… in necp_client_parse_parameters()
3312 …memcmp(&sin6.sin6_addr, &parsed_parameters->remote_addr.sin6.sin6_addr, sizeof(struct in6_addr)) !… in necp_client_parse_parameters()
3370 necp_client_trace_parsed_parameters(client, parsed_parameters); in necp_client_parse_parameters()
4048 struct necp_client_parsed_parameters * __single parsed_parameters = NULL; in necp_socket_is_allowed_to_recv_on_interface() local
4050 parsed_parameters = kalloc_type(struct necp_client_parsed_parameters, in necp_socket_is_allowed_to_recv_on_interface()
4052 …se_parameters(client, client->parameters, (u_int32_t)client->parameters_length, parsed_parameters); in necp_socket_is_allowed_to_recv_on_interface()
4054 if (!necp_ifnet_matches_parameters(interface, parsed_parameters, 0, NULL, true, false)) { in necp_socket_is_allowed_to_recv_on_interface()
4058 kfree_type(struct necp_client_parsed_parameters, parsed_parameters); in necp_socket_is_allowed_to_recv_on_interface()
4313 necp_update_parsed_parameters(struct necp_client_parsed_parameters *parsed_parameters, in necp_update_parsed_parameters() argument
4316 if (parsed_parameters == NULL || in necp_update_parsed_parameters()
4334 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT) { in necp_update_parsed_parameters()
4337 if (uuid_compare(parsed_parameters->required_netagents[j], result->netagents[i]) == 0) { in necp_update_parsed_parameters()
4341 if (uuid_is_null(parsed_parameters->required_netagents[j])) { in necp_update_parsed_parameters()
4343 memcpy(&parsed_parameters->required_netagents[j], result->netagents[i], sizeof(uuid_t)); in necp_update_parsed_parameters()
4350 parsed_parameters->valid_fields |= NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT; in necp_update_parsed_parameters()
4351 memcpy(&parsed_parameters->required_netagents[0], result->netagents[i], sizeof(uuid_t)); in necp_update_parsed_parameters()
4356 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT_TYPE) { in necp_update_parsed_parameters()
4361 …if (strbuflen(parsed_parameters->required_netagent_types[j].netagent_domain, sizeof(parsed_paramet… in necp_update_parsed_parameters()
4362 …strbuflen(parsed_parameters->required_netagent_types[j].netagent_type, sizeof(parsed_parameters->r… in necp_update_parsed_parameters()
4366 …if (strbufcmp(parsed_parameters->required_netagent_types[j].netagent_domain, sizeof(parsed_paramet… in necp_update_parsed_parameters()
4367 …strbufcmp(parsed_parameters->required_netagent_types[j].netagent_type, sizeof(parsed_parameters->r… in necp_update_parsed_parameters()
4372 …memset(&parsed_parameters->required_netagent_types[NECP_MAX_AGENT_PARAMETERS - 1], 0, sizeof(struc… in necp_update_parsed_parameters()
4376 memmove(&parsed_parameters->required_netagent_types[j], in necp_update_parsed_parameters()
4377 &parsed_parameters->required_netagent_types[j + 1], in necp_update_parsed_parameters()
4379 …memset(&parsed_parameters->required_netagent_types[NECP_MAX_AGENT_PARAMETERS - 1], 0, sizeof(struc… in necp_update_parsed_parameters()
4393 parsed_parameters->required_interface_index != IFSCOPE_NONE && in necp_update_parsed_parameters()
4394 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IF) == 0) { in necp_update_parsed_parameters()
4396 parsed_parameters->required_interface_index = IFSCOPE_NONE; in necp_update_parsed_parameters()
4416 struct necp_client_parsed_parameters *parsed_parameters, in necp_calculate_client_result() argument
4429 if (necp_find_matching_interface_index(parsed_parameters, &matching_if_index, &validate_agents)) { in necp_calculate_client_result()
4431 parsed_parameters->required_interface_index = matching_if_index; in necp_calculate_client_result()
4451 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT) { in necp_calculate_client_result()
4453 if (uuid_is_null(parsed_parameters->required_netagents[i])) { in necp_calculate_client_result()
4468 if (uuid_compare(parsed_parameters->required_netagents[i], result->netagents[j]) == 0) { in necp_calculate_client_result()
4481 …if (!requirement_failed && parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED… in necp_calculate_client_result()
4483 …if (strbuflen(parsed_parameters->required_netagent_types[i].netagent_domain, sizeof(parsed_paramet… in necp_calculate_client_result()
4484 …strbuflen(parsed_parameters->required_netagent_types[i].netagent_type, sizeof(parsed_parameters->r… in necp_calculate_client_result()
4503 if (necp_agent_types_match(parsed_parameters->required_netagent_types[i].netagent_domain, in necp_calculate_client_result()
4504 parsed_parameters->required_netagent_types[i].netagent_type, in necp_calculate_client_result()
4557 struct necp_client_parsed_parameters * __single parsed_parameters = NULL; in necp_update_client_result() local
4563 parsed_parameters = kalloc_type(struct necp_client_parsed_parameters, in necp_update_client_result()
4569 …se_parameters(client, client->parameters, (u_int32_t)client->parameters_length, parsed_parameters); in necp_update_client_result()
4571 kfree_type(struct necp_client_parsed_parameters, parsed_parameters); in necp_update_client_result()
4574 bool originally_scoped = (parsed_parameters->required_interface_index != IFSCOPE_NONE); in necp_update_client_result()
4577 client->ip_protocol = parsed_parameters->ip_protocol; in necp_update_client_result()
4584 …if (!necp_calculate_client_result(proc, client, parsed_parameters, &result, &flags, &reason, &v4_g… in necp_update_client_result()
4585 kfree_type(struct necp_client_parsed_parameters, parsed_parameters); in necp_update_client_result()
4589 if (necp_update_parsed_parameters(parsed_parameters, &result)) { in necp_update_client_result()
4591 …if (!necp_calculate_client_result(proc, client, parsed_parameters, &result, &flags, &reason, &v4_g… in necp_update_client_result()
4592 kfree_type(struct necp_client_parsed_parameters, parsed_parameters); in necp_update_client_result()
4597 if ((parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER) && in necp_update_client_result()
4598 parsed_parameters->required_interface_index != IFSCOPE_NONE && in necp_update_client_result()
4599 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IF) == 0) { in necp_update_client_result()
4601 parsed_parameters->required_interface_index = IFSCOPE_NONE; in necp_update_client_result()
4609 if ((parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_MULTIPATH) || in necp_update_client_result()
4610 (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_BROWSE) || in necp_update_client_result()
4611 ((parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER) && in necp_update_client_result()
4622 parsed_parameters->required_interface_index == result.routed_interface_index) { in necp_update_client_result()
4634 if (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER) { in necp_update_client_result()
4672 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_REQUIRED_FIELDS) && in necp_update_client_result()
4673 parsed_parameters->required_interface_index != IFSCOPE_NONE && in necp_update_client_result()
4674 parsed_parameters->required_interface_index != result.routed_interface_index) { in necp_update_client_result()
4675 routed_interface_index = parsed_parameters->required_interface_index; in necp_update_client_result()
4721 bool has_remote_addr = parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REMOTE_ADDR; in necp_update_client_result()
4769 …if (necp_netagent_applies_to_client(client, parsed_parameters, &netagent.netagent_uuid, TRUE, 0, 0… in necp_update_client_result()
4782 } else if (parsed_parameters->required_interface_index != IFSCOPE_NONE && in necp_update_client_result()
4783 parsed_parameters->required_interface_index <= (u_int32_t)if_index) { in necp_update_client_result()
4785 direct_interface = ifindex2ifnet[parsed_parameters->required_interface_index]; in necp_update_client_result()
4795 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_REQUIRED_FIELDS) && in necp_update_client_result()
4796 parsed_parameters->required_interface_index != IFSCOPE_NONE && in necp_update_client_result()
4797parsed_parameters->required_interface_index != result.routing_result_parameter.tunnel_interface_in… in necp_update_client_result()
4798 parsed_parameters->required_interface_index <= (u_int32_t)if_index) { in necp_update_client_result()
4799 original_scoped_interface = ifindex2ifnet[parsed_parameters->required_interface_index]; in necp_update_client_result()
4835 …if (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_MULTIPATH && !(parsed_parameters->flags … in necp_update_client_result()
4839 necp_client_add_agent_interface_options(client, parsed_parameters, direct_interface); in necp_update_client_result()
4845 if (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_INBOUND) { in necp_update_client_result()
4850 necp_ifnet_matches_parameters(multi_interface, parsed_parameters, 0, NULL, true, false)) { in necp_update_client_result()
4852 necp_client_add_agent_interface_options(client, parsed_parameters, multi_interface); in necp_update_client_result()
4860 necp_ifnet_matches_parameters(multi_interface, parsed_parameters, 0, NULL, true, false)) { in necp_update_client_result()
4862 necp_client_add_agent_interface_options(client, parsed_parameters, multi_interface); in necp_update_client_result()
4870 } else if (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER) { in necp_update_client_result()
4875 necp_client_add_agent_interface_options(client, parsed_parameters, direct_interface); in necp_update_client_result()
4886 necp_ifnet_matches_parameters(listen_interface, parsed_parameters, 0, NULL, true, false)) { in necp_update_client_result()
4888 necp_client_add_agent_interface_options(client, parsed_parameters, listen_interface); in necp_update_client_result()
4892 } else if (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_BROWSE) { in necp_update_client_result()
4896 necp_client_add_browse_interface_options(client, parsed_parameters, direct_interface); in necp_update_client_result()
4902 if (necp_ifnet_matches_parameters(browse_interface, parsed_parameters, 0, NULL, true, false)) { in necp_update_client_result()
4903 necp_client_add_browse_interface_options(client, parsed_parameters, browse_interface); in necp_update_client_result()
4938 if (necp_netagent_applies_to_client(client, parsed_parameters, &netagent.netagent_uuid, FALSE, in necp_update_client_result()
4972 if (necp_netagent_applies_to_client(client, parsed_parameters, &netagent.netagent_uuid, TRUE, in necp_update_client_result()
5008 if (necp_netagent_applies_to_client(client, parsed_parameters, &netagent.netagent_uuid, FALSE, in necp_update_client_result()
5053 kfree_type(struct necp_client_parsed_parameters, parsed_parameters); in necp_update_client_result()
5691 struct necp_client_parsed_parameters *parsed_parameters, in necp_ifnet_matches_parameters() argument
5703 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IF) { in necp_ifnet_matches_parameters()
5704 if (parsed_parameters->required_interface_index != ifp->if_index) { in necp_ifnet_matches_parameters()
5716 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_LOCAL_ADDR) { in necp_ifnet_matches_parameters()
5717 if (!necp_ifnet_matches_local_address(ifp, SA(&parsed_parameters->local_addr.sa))) { in necp_ifnet_matches_parameters()
5725 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) { in necp_ifnet_matches_parameters()
5740 if ((parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_PROHIBIT_EXPENSIVE) && in necp_ifnet_matches_parameters()
5744 if ((parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_PROHIBIT_CONSTRAINED) && in necp_ifnet_matches_parameters()
5748 if (!(parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_ALLOW_ULTRA_CONSTRAINED) && in necp_ifnet_matches_parameters()
5756 …!(parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) || // or if there are… in necp_ifnet_matches_parameters()
5757 …!(parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_ONLY_PRIMARY_REQUIRES_TYPE)) && // or… in necp_ifnet_matches_parameters()
5758 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IFTYPE) && in necp_ifnet_matches_parameters()
5759 !necp_ifnet_matches_type(ifp, parsed_parameters->required_interface_type, FALSE)) { in necp_ifnet_matches_parameters()
5763 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IFTYPE) { in necp_ifnet_matches_parameters()
5769 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_IFTYPE) { in necp_ifnet_matches_parameters()
5771 if (parsed_parameters->prohibited_interface_types[i] == 0) { in necp_ifnet_matches_parameters()
5775 if (necp_ifnet_matches_type(ifp, parsed_parameters->prohibited_interface_types[i], TRUE)) { in necp_ifnet_matches_parameters()
5781 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_IF) { in necp_ifnet_matches_parameters()
5783 …if (strbuflen(parsed_parameters->prohibited_interfaces[i], sizeof(parsed_parameters->prohibited_in… in necp_ifnet_matches_parameters()
5787 if (necp_ifnet_matches_name(ifp, parsed_parameters->prohibited_interfaces[i], TRUE)) { in necp_ifnet_matches_parameters()
5793 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT) { in necp_ifnet_matches_parameters()
5795 if (uuid_is_null(parsed_parameters->required_netagents[i])) { in necp_ifnet_matches_parameters()
5799 if (!necp_ifnet_matches_agent(ifp, &parsed_parameters->required_netagents[i], FALSE)) { in necp_ifnet_matches_parameters()
5809 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_AGENT) { in necp_ifnet_matches_parameters()
5811 if (uuid_is_null(parsed_parameters->prohibited_netagents[i])) { in necp_ifnet_matches_parameters()
5815 if (necp_ifnet_matches_agent(ifp, &parsed_parameters->prohibited_netagents[i], TRUE)) { in necp_ifnet_matches_parameters()
5821 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_AGENT_TYPE) { in necp_ifnet_matches_parameters()
5823 …if (strbuflen(parsed_parameters->required_netagent_types[i].netagent_domain, sizeof(parsed_paramet… in necp_ifnet_matches_parameters()
5824 …strbuflen(parsed_parameters->required_netagent_types[i].netagent_type, sizeof(parsed_parameters->r… in necp_ifnet_matches_parameters()
5828 …!necp_ifnet_matches_agent_type(ifp, parsed_parameters->required_netagent_types[i].netagent_domain,… in necp_ifnet_matches_parameters()
5838 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_PROHIBITED_AGENT_TYPE) { in necp_ifnet_matches_parameters()
5840 …if (strbuflen(parsed_parameters->prohibited_netagent_types[i].netagent_domain, sizeof(parsed_param… in necp_ifnet_matches_parameters()
5841 …strbuflen(parsed_parameters->prohibited_netagent_types[i].netagent_type, sizeof(parsed_parameters-… in necp_ifnet_matches_parameters()
5845 …necp_ifnet_matches_agent_type(ifp, parsed_parameters->prohibited_netagent_types[i].netagent_domain… in necp_ifnet_matches_parameters()
5853 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_PREFERRED_AGENT) { in necp_ifnet_matches_parameters()
5855 if (uuid_is_null(parsed_parameters->preferred_netagents[i])) { in necp_ifnet_matches_parameters()
5859 if (necp_ifnet_matches_agent(ifp, &parsed_parameters->preferred_netagents[i], TRUE)) { in necp_ifnet_matches_parameters()
5868 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_PREFERRED_AGENT_TYPE) { in necp_ifnet_matches_parameters()
5870 …if (strbuflen(parsed_parameters->preferred_netagent_types[i].netagent_domain, sizeof(parsed_parame… in necp_ifnet_matches_parameters()
5871 …strbuflen(parsed_parameters->preferred_netagent_types[i].netagent_type, sizeof(parsed_parameters->… in necp_ifnet_matches_parameters()
5875 …(necp_ifnet_matches_agent_type(ifp, parsed_parameters->preferred_netagent_types[i].netagent_domain… in necp_ifnet_matches_parameters()
5884 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_AVOIDED_AGENT) { in necp_ifnet_matches_parameters()
5886 if (uuid_is_null(parsed_parameters->avoided_netagents[i])) { in necp_ifnet_matches_parameters()
5890 if (!necp_ifnet_matches_agent(ifp, &parsed_parameters->avoided_netagents[i], TRUE)) { in necp_ifnet_matches_parameters()
5896 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_AVOIDED_AGENT_TYPE) { in necp_ifnet_matches_parameters()
5898 …if (strbuflen(parsed_parameters->avoided_netagent_types[i].netagent_domain, sizeof(parsed_paramete… in necp_ifnet_matches_parameters()
5899 …strbuflen(parsed_parameters->avoided_netagent_types[i].netagent_type, sizeof(parsed_parameters->av… in necp_ifnet_matches_parameters()
5903 …if (!necp_ifnet_matches_agent_type(ifp, parsed_parameters->avoided_netagent_types[i].netagent_doma… in necp_ifnet_matches_parameters()
5904 parsed_parameters->avoided_netagent_types[i].netagent_type, TRUE)) { in necp_ifnet_matches_parameters()
5919 necp_find_matching_interface_index(struct necp_client_parsed_parameters *parsed_parameters, in necp_find_matching_interface_index() argument
5927 if (parsed_parameters->required_interface_index != 0) { in necp_find_matching_interface_index()
5928 *return_ifindex = parsed_parameters->required_interface_index; in necp_find_matching_interface_index()
5935 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) { in necp_find_matching_interface_index()
5936 flags = parsed_parameters->flags; in necp_find_matching_interface_index()
5937 has_prohibit_flags = (parsed_parameters->flags & in necp_find_matching_interface_index()
5942 if (!(parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_INTERESTING_IFNET_FIELDS) && in necp_find_matching_interface_index()
5947 has_preferred_fields = (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_PREFERRED_FIELDS); in necp_find_matching_interface_index()
5952 if (!(parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_SCOPED_FIELDS) && in necp_find_matching_interface_index()
5957 if (ifp == NULL || necp_ifnet_matches_parameters(ifp, parsed_parameters, 0, NULL, false, false)) { in necp_find_matching_interface_index()
5963 if (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REMOTE_ADDR && in necp_find_matching_interface_index()
5964 parsed_parameters->remote_addr.sin6.sin6_family == AF_INET6 && in necp_find_matching_interface_index()
5965 parsed_parameters->remote_addr.sin6.sin6_scope_id != IFSCOPE_NONE && in necp_find_matching_interface_index()
5966 parsed_parameters->remote_addr.sin6.sin6_scope_id <= (u_int32_t)if_index) { in necp_find_matching_interface_index()
5967 ifp = ifindex2ifnet[parsed_parameters->remote_addr.sin6.sin6_scope_id]; in necp_find_matching_interface_index()
5968 … if (ifp != NULL && necp_ifnet_matches_parameters(ifp, parsed_parameters, 0, NULL, false, false)) { in necp_find_matching_interface_index()
5980 …if (necp_ifnet_matches_parameters(ifp, parsed_parameters, flags, &preferred_count, false, false)) { in necp_find_matching_interface_index()
6003 bool is_listener = ((parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) && in necp_find_matching_interface_index()
6004 (parsed_parameters->flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER)); in necp_find_matching_interface_index()
6007 if ((parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_SCOPED_FIELDS) && in necp_find_matching_interface_index()
6008 ((!(parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_REQUIRED_IFTYPE)) || in necp_find_matching_interface_index()
6009 …necp_interface_type_should_match_unranked_interfaces(parsed_parameters->required_interface_type) || in necp_find_matching_interface_index()
6010 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_FIELD_LOCAL_ADDR) || in necp_find_matching_interface_index()
6019 … if (necp_ifnet_matches_parameters(ifp, parsed_parameters, flags, &preferred_count, false, true)) { in necp_find_matching_interface_index()
6037 …((parsed_parameters->valid_fields & (NECP_PARSED_PARAMETERS_SCOPED_FIELDS | NECP_PARSED_PARAMETERS… in necp_find_matching_interface_index()
6038 (parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_PREFERRED_FIELDS))) { in necp_find_matching_interface_index()
6045 !(parsed_parameters->valid_fields & NECP_PARSED_PARAMETERS_SCOPED_IFNET_FIELDS)) { in necp_find_matching_interface_index()
7288 struct necp_client_parsed_parameters parsed_parameters = {}; in necp_client_add() local
7289 …e_parameters(client, client->parameters, (u_int32_t)client->parameters_length, &parsed_parameters); in necp_client_add()
7292 ((parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_DELEGATED_UPID) || in necp_client_add()
7293 … (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_ATTRIBUTED_BUNDLE_IDENTIFIER))) { in necp_client_add()
7296 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_DELEGATED_UPID) { in necp_client_add()
7300 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_ATTRIBUTED_BUNDLE_IDENTIFIER) { in necp_client_add()
7308 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_DELEGATED_UPID) { in necp_client_add()
7310 client->delegated_upid = parsed_parameters.delegated_upid; in necp_client_add()
7314 if (parse_error == 0 && parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_INTERPOSE) { in necp_client_add()
7324 if (parse_error == 0 && (parsed_parameters.flags & in necp_client_add()
7335 if (parse_error == 0 && parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER && in necp_client_add()
7336 … (parsed_parameters.ip_protocol == IPPROTO_TCP || parsed_parameters.ip_protocol == IPPROTO_UDP)) { in necp_client_add()
7342 flow_info.nfi_protocol = parsed_parameters.ip_protocol; in necp_client_add()
7344 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_EFFECTIVE_PID) { in necp_client_add()
7345 flow_info.nfi_effective_pid = parsed_parameters.effective_pid; in necp_client_add()
7352 if (parsed_parameters.local_addr.sa.sa_family == AF_UNSPEC) { in necp_client_add()
7355 parsed_parameters.local_addr.sin6.sin6_family = AF_INET6; in necp_client_add()
7356 parsed_parameters.local_addr.sin6.sin6_len = sizeof(struct sockaddr_in6); in necp_client_add()
7359 switch (parsed_parameters.local_addr.sa.sa_family) { in necp_client_add()
7361 …memcpy(&flow_info.nfi_laddr, &parsed_parameters.local_addr.sa, parsed_parameters.local_addr.sa.sa_… in necp_client_add()
7362 netns_addr = (uint32_t *)&parsed_parameters.local_addr.sin.sin_addr; in necp_client_add()
7367 …memcpy(&flow_info.nfi_laddr.sin6, &parsed_parameters.local_addr.sin6, parsed_parameters.local_addr… in necp_client_add()
7368 netns_addr = (uint32_t *)&parsed_parameters.local_addr.sin6.sin6_addr; in necp_client_add()
7374 …NECPLOG(LOG_ERR, "necp_client_add listener invalid address family (%d)", parsed_parameters.local_a… in necp_client_add()
7379 if ((parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) && in necp_client_add()
7380 (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_REUSE_LOCAL)) { in necp_client_add()
7383 if (parsed_parameters.local_addr.sin.sin_port == 0) { in necp_client_add()
7384 …rve_ephemeral(&client->port_reservation, netns_addr, netns_addr_len, parsed_parameters.ip_protocol, in necp_client_add()
7385 &parsed_parameters.local_addr.sin.sin_port, netns_flags, &flow_info); in necp_client_add()
7392 …arameters(client->parameters, (u_int32_t)client->parameters_length, parsed_parameters.local_addr.s… in necp_client_add()
7394 …error = netns_reserve(&client->port_reservation, netns_addr, netns_addr_len, parsed_parameters.ip_… in necp_client_add()
7395 parsed_parameters.local_addr.sin.sin_port, netns_flags, &flow_info); in necp_client_add()
7408 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_PARENT_UUID) { in necp_client_add()
7413 parent = necp_client_fd_find_client_unlocked(fd_data, parsed_parameters.parent_uuid); in necp_client_add()
7417 uuid_copy(parent_client_id, parsed_parameters.parent_uuid); in necp_client_add()
7428 …if (parse_error == 0 && parent != NULL && parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_… in necp_client_add()
7430 if (parsed_parameters.demux_patterns[0].len == 0) { in necp_client_add()
7444 if (parsed_parameters.ip_protocol != IPPROTO_UDP) { in necp_client_add()
7446 parsed_parameters.ip_protocol); in necp_client_add()
7449 if (parsed_parameters.ip_protocol != parent_parameters.ip_protocol) { in necp_client_add()
7453 …if (parsed_parameters.local_addr.sa.sa_family != AF_INET && parsed_parameters.local_addr.sa.sa_fam… in necp_client_add()
7455 parsed_parameters.local_addr.sa.sa_family); in necp_client_add()
7458 if (parsed_parameters.local_addr.sa.sa_family != parsed_parameters.remote_addr.sa.sa_family) { in necp_client_add()
7462 if (parsed_parameters.local_addr.sa.sa_family != parent_parameters.local_addr.sa.sa_family) { in necp_client_add()
7466 …if (SOCKADDR_CMP(&parsed_parameters.local_addr.sa, &parent_parameters.local_addr.sa, parsed_parame… in necp_client_add()
7470 …if (SOCKADDR_CMP(&parsed_parameters.remote_addr.sa, &parent_parameters.remote_addr.sa, parsed_para… in necp_client_add()
7474 if (parsed_parameters.local_addr.sin.sin_port != parent_parameters.local_addr.sin.sin_port) { in necp_client_add()
7478 if (parsed_parameters.remote_addr.sin.sin_port != parent_parameters.remote_addr.sin.sin_port) { in necp_client_add()
7791 struct necp_client_parsed_parameters parsed_parameters; in necp_client_check_tcp_heuristics() local
7796 &parsed_parameters); in necp_client_check_tcp_heuristics()
7818 if ((parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_ECN_ENABLE) == in necp_client_check_tcp_heuristics()
7824 if ((parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_ECN_DISABLE) == in necp_client_check_tcp_heuristics()
7839 bool inbound = ((parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER) == 0); in necp_client_check_tcp_heuristics()
7853 if ((parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_TFO_ENABLE) == in necp_client_check_tcp_heuristics()
8365 struct necp_client_parsed_parameters parsed_parameters = {}; in necp_client_copy_parameters_locked() local
8366 …e_parameters(client, client->parameters, (u_int32_t)client->parameters_length, &parsed_parameters); in necp_client_copy_parameters_locked()
8369 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_EFFECTIVE_PID) { in necp_client_copy_parameters_locked()
8370 parameters->epid = parsed_parameters.effective_pid; in necp_client_copy_parameters_locked()
8377 memcpy(&parameters->local_addr, &parsed_parameters.local_addr, sizeof(parameters->local_addr)); in necp_client_copy_parameters_locked()
8378 memcpy(&parameters->remote_addr, &parsed_parameters.remote_addr, sizeof(parameters->remote_addr)); in necp_client_copy_parameters_locked()
8379 parameters->ip_protocol = parsed_parameters.ip_protocol; in necp_client_copy_parameters_locked()
8380 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_TRANSPORT_PROTOCOL) { in necp_client_copy_parameters_locked()
8381 parameters->transport_protocol = parsed_parameters.transport_protocol; in necp_client_copy_parameters_locked()
8383 parameters->transport_protocol = parsed_parameters.ip_protocol; in necp_client_copy_parameters_locked()
8385 parameters->ethertype = parsed_parameters.ethertype; in necp_client_copy_parameters_locked()
8386 parameters->traffic_class = parsed_parameters.traffic_class; in necp_client_copy_parameters_locked()
8388 uuid_copy(parameters->euuid, parsed_parameters.effective_uuid); in necp_client_copy_parameters_locked()
8392 parameters->is_listener = (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_LISTENER) ? 1 : 0; in necp_client_copy_parameters_locked()
8393 …parameters->is_interpose = (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_INTERPOSE) ? 1 : … in necp_client_copy_parameters_locked()
8394 …parameters->is_custom_ether = (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_CUSTOM_ETHER) … in necp_client_copy_parameters_locked()
8408 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_LOCAL_ADDR_PREFERENCE) { in necp_client_copy_parameters_locked()
8409 …if (parsed_parameters.local_address_preference == NECP_CLIENT_PARAMETER_LOCAL_ADDRESS_PREFERENCE_D… in necp_client_copy_parameters_locked()
8411 …} else if (parsed_parameters.local_address_preference == NECP_CLIENT_PARAMETER_LOCAL_ADDRESS_PREFE… in necp_client_copy_parameters_locked()
8414 …} else if (parsed_parameters.local_address_preference == NECP_CLIENT_PARAMETER_LOCAL_ADDRESS_PREFE… in necp_client_copy_parameters_locked()
8422 if ((parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) && in necp_client_copy_parameters_locked()
8423 (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_NO_WAKE_FROM_SLEEP)) { in necp_client_copy_parameters_locked()
8427 if ((parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLAGS) && in necp_client_copy_parameters_locked()
8428 (parsed_parameters.flags & NECP_CLIENT_PARAMETER_FLAG_REUSE_LOCAL)) { in necp_client_copy_parameters_locked()
8434 if (parsed_parameters.valid_fields & NECP_PARSED_PARAMETERS_FIELD_FLOW_DEMUX_PATTERN) { in necp_client_copy_parameters_locked()
8435 if (parsed_parameters.demux_patterns[0].len == 0) { in necp_client_copy_parameters_locked()
8454 if (parsed_parameters.demux_pattern_count > 0) { in necp_client_copy_parameters_locked()
8455 for (int i = 0; i < parsed_parameters.demux_pattern_count; i++) { in necp_client_copy_parameters_locked()
8456 …memcpy(&parameters->demux_patterns[i], &parsed_parameters.demux_patterns[i], sizeof(struct necp_de… in necp_client_copy_parameters_locked()
8458 parameters->demux_pattern_count = parsed_parameters.demux_pattern_count; in necp_client_copy_parameters_locked()
9139 struct necp_client_nexus_parameters parsed_parameters = {}; in necp_client_agent_action() local
9140 necp_client_copy_parameters_locked(client, &parsed_parameters); in necp_client_agent_action()
9149 (struct necp_client_agent_parameters *)&parsed_parameters, in necp_client_agent_action()