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 |