|  | /** @file | 
|  | * @brief Packet Sockets related functions | 
|  | */ | 
|  |  | 
|  | /* | 
|  | * Copyright (c) 2019 Intel Corporation | 
|  | * | 
|  | * SPDX-License-Identifier: Apache-2.0 | 
|  | */ | 
|  |  | 
|  | #include <logging/log.h> | 
|  | LOG_MODULE_REGISTER(net_sockets_raw, CONFIG_NET_SOCKETS_LOG_LEVEL); | 
|  |  | 
|  | #include <errno.h> | 
|  | #include <net/net_pkt.h> | 
|  | #include <net/net_context.h> | 
|  | #include <net/ethernet.h> | 
|  |  | 
|  | #include "connection.h" | 
|  | #include "packet_socket.h" | 
|  |  | 
|  | enum net_verdict net_packet_socket_input(struct net_pkt *pkt) | 
|  | { | 
|  | /* Currently we are skipping L2 layer verification and not | 
|  | * removing L2 header from packet. | 
|  | * TODO : | 
|  | * 1) Pass it through L2 layer, so that L2 will verify | 
|  | * that packet is intended to us or not and sets src and dst lladdr. | 
|  | * And L2 should not pull off L2 header when combination of socket | 
|  | * like this AF_PACKET, SOCK_RAW and ETH_P_ALL proto. | 
|  | * 2) Socket combination of AF_INET, SOCK_RAW, IPPROTO_RAW | 
|  | * packet has to go through L2 and L2 verfies it's header and removes | 
|  | * header. Only packet with L3 header will be given to socket. | 
|  | * 3) If user opens raw and non raw socket together, based on raw | 
|  | * socket combination packet has to be feed to raw socket and only | 
|  | * data part to be feed to non raw socket. | 
|  | */ | 
|  |  | 
|  | net_pkt_set_family(pkt, AF_PACKET); | 
|  |  | 
|  | return net_conn_input(pkt, NULL, ETH_P_ALL, NULL); | 
|  | } |