Browse Source

Update: Build script, ETCP protocol docs, and TUN interface

- Modified build.sh for better compilation flow
- Updated etcp.h with connection structures
- Refined etcp_protocol.txt documentation
- Enhanced tun_if.c implementation
v2_dev
Evgeny 2 months ago
parent
commit
fe9eba14cd
  1. 2
      build.sh
  2. 2
      src/etcp.h
  3. 5
      src/etcp_protocol.txt
  4. 7
      src/tun_if.c

2
build.sh

@ -1,3 +1,3 @@
#!/bin/bash
make 2> build_errors.txt
build/src/utun.conf -h
#build/src/utun.conf -h

2
src/etcp.h

@ -124,7 +124,7 @@ struct ETCP_CONN* etcp_connection_create(struct UTUN_INSTANCE* instance);
void etcp_connection_close(struct ETCP_CONN* etcp);
// Обработать входящий пакет (вызывается из etcp_connections)
void etcp_conn_input(struct ETCP_CONN* etcp, struct ETCP_DGRAM* pkt);
void etcp_conn_input(struct ETCP_DGRAM* pkt);
// Сброс соединения (переинициализация)
void etcp_conn_reset(struct ETCP_CONN* etcp);

5
src/etcp_protocol.txt

@ -33,9 +33,8 @@
Установка подключения для канала (реализщуется в etcp_connections):
когда etcp пытается отправить пакет через линк, то
если в линке не инициализировано подключение и он клиент то он отбрасывает этот пакет и запускает процесс установки соединения.
также процесс установки соединения инициируется при добавлении канала если это client.
когда etcp пытается отправить пакет через линк, то если в линке не инициализировано подключение и он клиент - то он отбрасывает этот пакет и запускает процесс установки соединения.
также процесс установки соединения инициируется при добавлении канала (в etcp_link_new) если это client.
процесс установки соединения:
- отправляем init запрос и выставляем таймаут (сохраняем его в struct ETCP_LINK)

7
src/tun_if.c

@ -291,9 +291,10 @@ static void tun_read_callback(int fd, void* user_arg) {
memset(&dest_addr, 0, sizeof(dest_addr));
dest_addr.sin_family = AF_INET;
dest_addr.sin_addr.s_addr = route.next_hop_ip;
if (etcp_connections_send(route.next_hop, buffer, nread, (struct sockaddr*)&dest_addr, sizeof(dest_addr)) < 0) {
DEBUG_ERROR(DEBUG_CATEGORY_ETCP, "Failed to send packet via route");
}
// todo: отправлять в модуль роутинга все входящие пакеты. когда этот модуль будет. модуль роутинга это не роутинг таблица (routing.h)
// if (etcp_connections_send(route.next_hop, buffer, nread, (struct sockaddr*)&dest_addr, sizeof(dest_addr)) < 0) {
// DEBUG_ERROR(DEBUG_CATEGORY_ETCP, "Failed to send packet via route");
// }
} else {
// Local route - no forwarding needed
DEBUG_DEBUG(DEBUG_CATEGORY_ROUTING, "Local packet, no forwarding");

Loading…
Cancel
Save