CS43 Lab7 - A Router Stack  1.2019
Classes | Macros | Typedefs | Enumerations | Functions | Variables
sr_protocol.h File Reference

A collection of macros, structs, and enums to represent packet types and headers. More...

#include <sys/types.h>
#include <arpa/inet.h>
Include dependency graph for sr_protocol.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  sr_icmp_hdr
 General struct of a ICMP header. More...
 
struct  sr_icmp_t0_hdr
 Struct of a Type-0 (echo reply) ICMP header. More...
 
struct  sr_icmp_t3_hdr
 Struct of a Type-3 (destination unreachable) ICMP header. More...
 
struct  sr_icmp_t11_hdr
 Struct of a Type-11 (TTL exceeded) ICMP header. More...
 
struct  sr_ip_hdr
 Struct of an IP header, without options. More...
 
struct  sr_ethernet_hdr
 Struct of an Ethernet Header. More...
 
struct  sr_arp_hdr
 Struct of an ARP header. More...
 

Macros

#define IP_MAXPACKET   65535
 
#define __LITTLE_ENDIAN   1
 
#define __BIG_ENDIAN   2
 
#define ICMP_DATA_SIZE   28
 
#define ICMP_ZERO_HEADER_SIZE   10
 
#define ICMP_ELEVEN_HEADER_SIZE   36
 
#define IP_RF   0x8000
 reserved fragment flag
 
#define IP_DF   0x4000
 dont fragment flag
 
#define IP_MF   0x2000
 more fragments flag
 
#define IP_OFFMASK   0x1fff
 mask for fragmenting bits
 
#define ETHER_ADDR_LEN   6
 
#define ICMP_TYPE_ECHO_REPLY   0
 
#define ICMP_TYPE_DEST_UNREACH   3
 
#define ICMP_TYPE_ECHO_REQUEST   8
 
#define ICMP_TYPE_TIME_EXCEEDED   11
 
#define ICMP_CODE_NET_UNREACH   0
 
#define ICMP_CODE_HOST_UNREACH   1
 
#define ICMP_CODE_PROTO_UNREACH   2
 
#define ICMP_CODE_PORT_UNREACH   3
 
#define ICMP_CODE_TTL_EXPIRED   0
 
#define IP_PROTO_ICMP   0x0001
 
#define IPV4_HEADER_LEN   20
 
#define ICMP_HEADER_LEN   8
 
#define sr_IFACE_NAMELEN   32
 

Typedefs

typedef struct sr_icmp_hdr sr_icmp_hdr_t
 
typedef struct sr_icmp_t0_hdr sr_icmp_t0_hdr_t
 
typedef struct sr_icmp_t3_hdr sr_icmp_t3_hdr_t
 
typedef struct sr_icmp_t11_hdr sr_icmp_t11_hdr_t
 
typedef struct sr_ip_hdr sr_ip_hdr_t
 
typedef struct sr_ethernet_hdr sr_ethernet_hdr_t
 
typedef struct sr_arp_hdr sr_arp_hdr_t
 

Enumerations

enum  sr_ip_protocol { ip_protocol_icmp = 0x0001 }
 Enumeration of useful codes for protocols encapsulated in IP.
 
enum  sr_ethertype { ethertype_arp = 0x0806, ethertype_ip = 0x0800 }
 Enumeration of useful codes for protocols encapsulated in Ethernet.
 
enum  sr_arp_opcode { arp_op_request = 0x0001, arp_op_reply = 0x0002 }
 Enumeration of useful codes for ARP operations.
 
enum  sr_arp_hrd_fmt { arp_hrd_ethernet = 0x0001 }
 Enumeration of useful hardware format codes for ARP.
 

Functions

struct sr_icmp_hdr __attribute__ ((packed))
 

Variables

uint8_t icmp_type
 icmp type
 
uint8_t icmp_code
 icmp code, if needed
 
uint16_t icmp_sum
 icmp checksum
 
uint16_t icmp_id
 icmp identifier, you shouldn't need to use this
 
uint16_t icmp_seq
 icmp sequence number, you shouldn't need to use this
 
uint16_t timestamp
 
uint16_t data [ICMP_DATA_SIZE/2]
 
uint16_t unused
 
uint16_t next_mtu
 
uint8_t ip_tos
 type of service
 
uint16_t ip_len
 total length
 
uint16_t ip_id
 identification
 
uint16_t ip_off
 fragment offset field
 
uint8_t ip_ttl
 time to live
 
uint8_t ip_p
 protocol of encapsulated packet
 
uint16_t ip_sum
 IP checksum.
 
uint32_t ip_src
 src IP address
 
uint32_t ip_dst
 dest IP address
 
uint8_t ether_dhost [ETHER_ADDR_LEN]
 destination ethernet address
 
uint8_t ether_shost [ETHER_ADDR_LEN]
 source ethernet address
 
uint16_t ether_type
 type (protocol) of encapsulated packet
 
enum sr_ip_protocol __attribute__
 
unsigned short ar_hrd
 format of hardware address
 
unsigned short ar_pro
 format of protocol address
 
unsigned char ar_hln
 length of hardware address
 
unsigned char ar_pln
 length of protocol address
 
unsigned short ar_op
 ARP opcode (command)
 
unsigned char ar_sha [ETHER_ADDR_LEN]
 sender hardware address
 
uint32_t ar_sip
 sender IP address
 
unsigned char ar_tha [ETHER_ADDR_LEN]
 target hardware address
 
uint32_t ar_tip
 target IP address
 

Detailed Description

A collection of macros, structs, and enums to represent packet types and headers.