How sbktckp/computer-networks works
Purpose and Scope
This is a C17 Computer Networks lab repository. The present assignment teaches low-level C concepts needed for networking work: pointer mutation, struct passing semantics, byte-level representation, packet reconstruction, and host endianness.
Entry Points and Execution
Each .c source file is an independently runnable program with its own main. The repository-level run launcher selects a question and optionally its compact variant; it forwards remaining CLI arguments to the selected executable. Makefile builds all programs and cleans generated binaries.
Core entry paths:
• run
• Makefile
• Assignment 2 - C Basics and Endianness/README.md
Assignment Module Layout
Assignment 2 is organized as five numbered exercises, with a full instructional implementation at the assignment root and a behavior-equivalent minimal implementation in compact/.
Primary module paths:
• Assignment 2 - C Basics and Endianness/2.1_swap_pointer.c
• Assignment 2 - C Basics and Endianness/2.2_struct_call_by_value_address.c
• Assignment 2 - C Basics and Endianness/2.3_byte_extraction.c
• Assignment 2 - C Basics and Endianness/2.4_struct_pkt_reassemble.c
• Assignment 2 - C Basics and Endianness/2.5_endianness_check.c
Pointer and Struct Semantics
The first two programs establish C memory and parameter-passing behavior. The pointer swap exercise mutates caller-owned values through addresses, while the struct exercise contrasts a copied struct received by value against mutation through a struct address.
Relevant paths:
• Assignment 2 - C Basics and Endianness/2.1_swap_pointer.c
• Assignment 2 - C Basics and Endianness/2.2_struct_call_by_value_address.c
• Assignment 2 - C Basics and Endianness/compact/2.2_struct_call_by_value_address.c
Byte Representation and Packet Assembly
The byte extraction exercise interprets an integer’s individual bytes, using unsigned-byte handling to avoid signed-extension issues. The packet reassembly exercise is the assignment’s networking-oriented boundary: it combines component byte fields into a reconstructed structured packet/value representation.
Relevant paths:
• Assignment 2 - C Basics and Endianness/2.3_byte_extraction.c
• Assignment 2 - C Basics and Endianness/2.4_struct_pkt_reassemble.c
• Assignment 2 - C Basics and Endianness/compact/2.4_struct_pkt_reassemble.c
Endianness Boundary
Host byte order is explicitly detected rather than assumed, using a union-based probe. This connects in-memory integer layout to network-data interpretation and complements extraction/reassembly behavior.
Relevant paths:
• Assignment 2 - C Basics and Endianness/2.5_endianness_check.c
• Assignment 2 - C Basics and Endianness/compact/2.5_endianness_check.c
Runtime and Build Constraints
Programs target standard C17 and compile with GCC under warning-focused flags (-Wall -Wextra -Wpedantic). The intended runtime environments are Codespaces, WSL, Linux, and macOS; no application server, database, or external network service is involved. Full sources prioritize explanatory comments; compact sources preserve output while minimizing implementation size.
Relevant paths:
• Assignment 2 - C Basics and Endianness/compact/README.md
• Makefile
• run
Main entry points: Makefile Makefile · run run launcher · 2.4_struct_pkt_reassemble.c Packet reassembly · README.md Assignment guide
Components 13
Full instructional programs
Independently runnable C17 exercises.
- Pointer swap · Mutates caller-owned values through pointers.
Assignment 2 - C Basics and Endianness/2.1_swap_pointer.c - Struct passing · Contrasts by-value copies with address-based mutation.
Assignment 2 - C Basics and Endianness/2.2_struct_call_by_value_address.c - Byte extraction · Extracts integer bytes using unsigned-byte handling.
Assignment 2 - C Basics and Endianness/2.3_byte_extraction.c - Packet reassembly · Combines byte fields into a structured packet representation.
Assignment 2 - C Basics and Endianness/2.4_struct_pkt_reassemble.c - Endianness probe · Detects host byte order with a union-based probe.
Assignment 2 - C Basics and Endianness/2.5_endianness_check.c
Compact equivalents
Minimal implementations with equivalent behavior.
- Compact guide · Documents the minimal exercise variants.
Assignment 2 - C Basics and Endianness/compact/README.md - Compact struct passing · Minimal equivalent of struct passing behavior.
Assignment 2 - C Basics and Endianness/compact/2.2_struct_call_by_value_address.c - Compact packet reassembly · Minimal equivalent of packet reconstruction.
Assignment 2 - C Basics and Endianness/compact/2.4_struct_pkt_reassemble.c - Compact endianness probe · Minimal equivalent host-order detection.
Assignment 2 - C Basics and Endianness/compact/2.5_endianness_check.c
Other components
- run launcher · Selects an exercise and forwards CLI arguments.
run - Makefile · Builds all exercise binaries and cleans outputs.
Makefile - Assignment guide · Explains the assignment exercises and usage.
Assignment 2 - C Basics and Endianness/README.md - C17 / GCC runtime · Warning-focused GCC compilation on local Unix-like environments.
Connections 27
- Assignment guide → Pointer swap: introduces
- Assignment guide → Struct passing: introduces
- Assignment guide → Byte extraction: introduces
- Assignment guide → Packet reassembly: introduces
- Assignment guide → Endianness probe: introduces
- Makefile → Pointer swap: builds
- Makefile → Struct passing: builds
- Makefile → Byte extraction: builds
- Makefile → Packet reassembly: builds
- Makefile → Endianness probe: builds
- Makefile → Compact struct passing: builds
- Makefile → Compact packet reassembly: builds
- Makefile → Compact endianness probe: builds
- run launcher → Pointer swap: runs selected exercise
- run launcher → Struct passing: runs selected exercise
- run launcher → Byte extraction: runs selected exercise
- run launcher → Packet reassembly: runs selected exercise
- run launcher → Endianness probe: runs selected exercise
- run launcher → Compact struct passing: runs compact variant
- run launcher → Compact packet reassembly: runs compact variant
- run launcher → Compact endianness probe: runs compact variant
- Struct passing → Compact struct passing: equivalent behavior
- Packet reassembly → Compact packet reassembly: equivalent behavior
- Endianness probe → Compact endianness probe: equivalent behavior
- Byte extraction → Packet reassembly: byte fields inform assembly
- Endianness probe → Packet reassembly: interprets host byte layout
- C17 / GCC runtime → Makefile: compiles with