Rev 3901 | Rev 3990 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 3901 | Rev 3912 | ||
|---|---|---|---|
| Line 1... | Line 1... | ||
| 1 | /* |
1 | /* |
| 2 | * Copyright (c) 2008 Lukas Mejdrech |
2 | * Copyright (c) 2009 Lukas Mejdrech |
| 3 | * All rights reserved. |
3 | * All rights reserved. |
| 4 | * |
4 | * |
| 5 | * Redistribution and use in source and binary forms, with or without |
5 | * Redistribution and use in source and binary forms, with or without |
| 6 | * modification, are permitted provided that the following conditions |
6 | * modification, are permitted provided that the following conditions |
| 7 | * are met: |
7 | * are met: |
| Line 24... | Line 24... | ||
| 24 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
24 | * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
25 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
| 26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 27 | */ |
27 | */ |
| 28 | 28 | ||
| 29 | /** @addtogroup net |
29 | /** @addtogroup packet |
| 30 | * @{ |
30 | * @{ |
| 31 | */ |
31 | */ |
| 32 | 32 | ||
| 33 | /** @file |
33 | /** @file |
| - | 34 | * Packet header. |
|
| 34 | */ |
35 | */ |
| 35 | 36 | ||
| 36 | #ifndef __NET_PACKET_HEADER_H__ |
37 | #ifndef __NET_PACKET_HEADER_H__ |
| 37 | #define __NET_PACKET_HEADER_H__ |
38 | #define __NET_PACKET_HEADER_H__ |
| 38 | 39 | ||
| 39 | #include <ipc/services.h> |
40 | #include <ipc/services.h> |
| 40 | 41 | ||
| 41 | #include "packet.h" |
42 | #include "packet.h" |
| 42 | 43 | ||
| - | 44 | /** Packet integrity check magic value. |
|
| - | 45 | */ |
|
| 43 | #define PACKET_MAGIC_VALUE 0x11227788 |
46 | #define PACKET_MAGIC_VALUE 0x11227788 |
| 44 | 47 | ||
| - | 48 | /** Packet header. |
|
| - | 49 | */ |
|
| 45 | struct packet{ |
50 | struct packet{ |
| - | 51 | /** Packet identifier. |
|
| - | 52 | */ |
|
| 46 | packet_id_t packet_id; |
53 | packet_id_t packet_id; |
| - | 54 | //TODO packet owner not used |
|
| - | 55 | /** Packet owner. |
|
| - | 56 | */ |
|
| 47 | services_t owner; |
57 | services_t owner; |
| - | 58 | //TODO needed packet mode? |
|
| - | 59 | /** Packet mode. |
|
| - | 60 | */ |
|
| 48 | packet_mode_t mode; |
61 | packet_mode_t mode; |
| - | 62 | /** Packet queue sorting value. |
|
| - | 63 | * The packet queue is sorted the ascending order. |
|
| - | 64 | */ |
|
| 49 | int order; |
65 | int order; |
| - | 66 | /** Packet metric. |
|
| - | 67 | */ |
|
| 50 | size_t metric; |
68 | size_t metric; |
| - | 69 | /** Previous packet in the queue. |
|
| - | 70 | */ |
|
| 51 | packet_id_t previous; |
71 | packet_id_t previous; |
| - | 72 | /** Next packet in the queue. |
|
| - | 73 | */ |
|
| 52 | packet_id_t next; |
74 | packet_id_t next; |
| - | 75 | /** Total length of the packet. |
|
| - | 76 | * Contains the header, the addresses and the data of the packet. |
|
| - | 77 | * Corresponds to the mapped sharable memory block. |
|
| - | 78 | */ |
|
| 53 | size_t length; |
79 | size_t length; |
| - | 80 | /** Source and destination addresses length. |
|
| - | 81 | */ |
|
| 54 | size_t addr_len; |
82 | size_t addr_len; |
| - | 83 | /** Souce address offset in bytes from the beginning of the packet header. |
|
| - | 84 | */ |
|
| 55 | size_t src_addr; |
85 | size_t src_addr; |
| - | 86 | /** Destination address offset in bytes from the beginning of the packet header. |
|
| - | 87 | */ |
|
| 56 | size_t dest_addr; |
88 | size_t dest_addr; |
| - | 89 | /** Reserved data prefix length in bytes. |
|
| - | 90 | */ |
|
| 57 | size_t max_prefix; |
91 | size_t max_prefix; |
| - | 92 | /** Reserved content length in bytes. |
|
| - | 93 | */ |
|
| 58 | size_t max_content; |
94 | size_t max_content; |
| - | 95 | /** Actual data start offset in bytes from the beginning of the packet header. |
|
| - | 96 | */ |
|
| 59 | size_t data_start; |
97 | size_t data_start; |
| - | 98 | /** Actual data end offset in bytes from the beginning of the packet header. |
|
| - | 99 | */ |
|
| 60 | size_t data_end; |
100 | size_t data_end; |
| - | 101 | /** Integrity check magic value. |
|
| - | 102 | */ |
|
| 61 | int magic_value; |
103 | int magic_value; |
| 62 | }; |
104 | }; |
| 63 | 105 | ||
| - | 106 | /** Returns whether the packet is valid. |
|
| - | 107 | * @param packet The packet to be checked. Input parameter. |
|
| - | 108 | * @returns true if the packet is not NULL and the magic value is correct. |
|
| - | 109 | * @returns false otherwise. |
|
| - | 110 | */ |
|
| 64 | static inline int packet_is_valid( const packet_t packet ){ |
111 | static inline int packet_is_valid( const packet_t packet ){ |
| 65 | return packet && ( packet->magic_value == PACKET_MAGIC_VALUE ); |
112 | return packet && ( packet->magic_value == PACKET_MAGIC_VALUE ); |
| 66 | } |
113 | } |
| 67 | 114 | ||
| 68 | #endif |
115 | #endif |