# TCP reset Optimization for REJECT\_DIR\_DST

**URL:** https://forum.suricata.io/t/tcp-reset-optimization-for-reject-dir-dst/6376
**Category:** Developers
**Created:** [June 29, 2026, 8:44am UTC](https://forum.suricata.io/t/tcp-reset-optimization-for-reject-dir-dst/6376 "2026-06-29T08:44:55Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![liheng562653799](https://avatars.discourse-cdn.com/v4/letter/l/f19dbf/32.png) [@liheng562653799](https://forum.suricata.io/u/liheng562653799)
#### Post date: [June 29, 2026, 8:44am UTC](https://forum.suricata.io/t/tcp-reset-optimization-for-reject-dir-dst/6376/1 "2026-06-29T08:44:55Z")

</div>

For module RespondReject, TCP reset can do a better way for REJECT\_DIR\_DST, as you annotates。

//befor my modification  
static inline void SetupTCP(Packet \*p, Libnet11Packet \*lpacket, enum RejectDirection dir)  
{  
switch (dir) {  
…  
case REJECT\_DIR\_DST:  
default:  
SCLogDebug(“sending a tcp reset to dst”);  
lpacket-\>seq = TCP\_GET\_RAW\_SEQ(tcph);  
lpacket-\>ack = TCP\_GET\_RAW\_ACK(tcph);

```auto
        lpacket->sp = p->sp;
        lpacket->dp = p->dp;
        break;
}
lpacket->window = TCP_GET_RAW_WINDOW(tcph);
//lpacket.seq += lpacket.dsize;

```

}

//after my modification  
static inline void SetupTCP(Packet \*p, Libnet11Packet \*lpacket, enum RejectDirection dir)  
{  
switch (dir) {  
…  
case REJECT\_DIR\_DST:  
default:  
SCLogDebug(“sending a tcp reset to dst”);  
lpacket-\>seq = TCP\_GET\_RAW\_SEQ(tcph);  
_ **lpacket-\>seq += p-\>payload\_len;** _  
lpacket-\>ack = TCP\_GET\_RAW\_ACK(tcph);

```auto
        lpacket->sp = p->sp;
        lpacket->dp = p->dp;
        break;
}
lpacket->window = TCP_GET_RAW_WINDOW(tcph);
//lpacket.seq += lpacket.dsize;

```

}
