Skip to content

Commit 70c93fc

Browse files
committedMar 19, 2025
starting to namespace types
1 parent 07c4d44 commit 70c93fc

File tree

3 files changed

+190
-215
lines changed

3 files changed

+190
-215
lines changed
 

‎ext/sockets/sockets.c

+30-30
Original file line numberDiff line numberDiff line change
@@ -497,12 +497,12 @@ static PHP_MINIT_FUNCTION(sockets)
497497
socket_object_handlers.compare = zend_objects_not_comparable;
498498

499499
#if defined(AF_PACKET)
500-
packet_ce = register_class_Packet();
501-
ethpacket_ce = register_class_EthernetPacket(packet_ce);
502-
tcppacket_ce = register_class_TcpPacket(packet_ce);
503-
udppacket_ce = register_class_UdpPacket(packet_ce);
504-
ipv4packet_ce = register_class_Ipv4Packet(packet_ce);
505-
ipv6packet_ce = register_class_Ipv6Packet(packet_ce);
500+
packet_ce = register_class_Socket_Packet();
501+
ethpacket_ce = register_class_Socket_EthernetPacket(packet_ce);
502+
tcppacket_ce = register_class_Socket_TcpPacket(packet_ce);
503+
udppacket_ce = register_class_Socket_UdpPacket(packet_ce);
504+
ipv4packet_ce = register_class_Socket_Ipv4Packet(packet_ce);
505+
ipv6packet_ce = register_class_Socket_Ipv6Packet(packet_ce);
506506
#endif
507507
address_info_ce = register_class_AddressInfo();
508508
address_info_ce->create_object = address_info_create_object;
@@ -1678,8 +1678,8 @@ PHP_FUNCTION(socket_recvfrom)
16781678
zval obj;
16791679
object_init_ex(&obj, ethpacket_ce);
16801680
zend_update_property(Z_OBJCE(obj), Z_OBJ(obj), ZEND_STRL("socket"), arg1);
1681-
zend_update_property_long(Z_OBJCE(obj), Z_OBJ(obj), ZEND_STRL("headersize"), sizeof(*e));
1682-
zend_update_property_long(Z_OBJCE(obj), Z_OBJ(obj), ZEND_STRL("ethprotocol"), protocol);
1681+
zend_update_property_long(Z_OBJCE(obj), Z_OBJ(obj), ZEND_STRL("headerSize"), sizeof(*e));
1682+
zend_update_property_long(Z_OBJCE(obj), Z_OBJ(obj), ZEND_STRL("ethProtocol"), protocol);
16831683

16841684
switch (protocol) {
16851685
case ETH_P_IP: {
@@ -1691,7 +1691,7 @@ PHP_FUNCTION(socket_recvfrom)
16911691
if (tlayer < sizeof(*ip) || totalip < tlayer) {
16921692
ZVAL_NULL(&zpayload);
16931693
zend_update_property(Z_OBJCE(obj), Z_OBJ(obj), ZEND_STRL("payload"), &zpayload);
1694-
zend_update_property_string(Z_OBJCE(obj), Z_OBJ(obj), ZEND_STRL("rawpacket"), ZSTR_VAL(recv_buf));
1694+
zend_update_property_string(Z_OBJCE(obj), Z_OBJ(obj), ZEND_STRL("rawPacket"), ZSTR_VAL(recv_buf));
16951695
zend_string_efree(recv_buf);
16961696
ZEND_TRY_ASSIGN_REF_VALUE(arg2, &obj);
16971697
ZEND_TRY_ASSIGN_REF_STRING(arg5, ifrname);
@@ -1708,35 +1708,35 @@ PHP_FUNCTION(socket_recvfrom)
17081708
d.s_addr = ip->daddr;
17091709
zval szpayload;
17101710
object_init_ex(&zpayload, ipv4packet_ce);
1711-
zend_update_property_string(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("ipsrc"), inet_ntoa(s));
1712-
zend_update_property_string(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("ipdst"), inet_ntoa(d));
1713-
zend_update_property_long(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("headersize"), sizeof(*ip));
1711+
zend_update_property_string(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("ipSrc"), inet_ntoa(s));
1712+
zend_update_property_string(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("ipDst"), inet_ntoa(d));
1713+
zend_update_property_long(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("headerSize"), sizeof(*ip));
17141714
zend_update_property(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("socket"), arg1);
17151715

17161716
switch (ip->protocol) {
17171717
case IPPROTO_TCP: {
17181718
struct tcphdr *tcp = (struct tcphdr *)ipdata;
17191719
object_init_ex(&szpayload, tcppacket_ce);
1720-
zend_update_property_long(Z_OBJCE(szpayload), Z_OBJ(szpayload), ZEND_STRL("srcport"), ntohs(tcp->th_sport));
1721-
zend_update_property_long(Z_OBJCE(szpayload), Z_OBJ(szpayload), ZEND_STRL("dstport"), ntohs(tcp->th_dport));
1722-
zend_update_property_long(Z_OBJCE(szpayload), Z_OBJ(szpayload), ZEND_STRL("headersize"), sizeof(*tcp));
1720+
zend_update_property_long(Z_OBJCE(szpayload), Z_OBJ(szpayload), ZEND_STRL("srcPort"), ntohs(tcp->th_sport));
1721+
zend_update_property_long(Z_OBJCE(szpayload), Z_OBJ(szpayload), ZEND_STRL("dstPort"), ntohs(tcp->th_dport));
1722+
zend_update_property_long(Z_OBJCE(szpayload), Z_OBJ(szpayload), ZEND_STRL("headerSize"), sizeof(*tcp));
17231723
zend_update_property(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("payload"), &szpayload);
17241724
break;
17251725
}
17261726
case IPPROTO_UDP: {
17271727
struct udphdr *udp = (struct udphdr *)ipdata;
17281728
object_init_ex(&szpayload, udppacket_ce);
1729-
zend_update_property_string(Z_OBJCE(szpayload), Z_OBJ(szpayload), ZEND_STRL("ipsrc"), inet_ntoa(s));
1730-
zend_update_property_string(Z_OBJCE(szpayload), Z_OBJ(szpayload), ZEND_STRL("ipdst"), inet_ntoa(d));
1729+
zend_update_property_string(Z_OBJCE(szpayload), Z_OBJ(szpayload), ZEND_STRL("ipSrc"), inet_ntoa(s));
1730+
zend_update_property_string(Z_OBJCE(szpayload), Z_OBJ(szpayload), ZEND_STRL("ipDst"), inet_ntoa(d));
17311731
zend_update_property_long(Z_OBJCE(szpayload), Z_OBJ(szpayload), ZEND_STRL("srcport"), ntohs(udp->uh_sport));
17321732
zend_update_property_long(Z_OBJCE(szpayload), Z_OBJ(szpayload), ZEND_STRL("dstport"), ntohs(udp->uh_dport));
1733-
zend_update_property_long(Z_OBJCE(szpayload), Z_OBJ(szpayload), ZEND_STRL("headersize"), sizeof(*udp));
1733+
zend_update_property_long(Z_OBJCE(szpayload), Z_OBJ(szpayload), ZEND_STRL("headerSize"), sizeof(*udp));
17341734
zend_update_property(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("payload"), &szpayload);
17351735
break;
17361736
}
17371737
default:
17381738
zend_update_property(Z_OBJCE(obj), Z_OBJ(obj), ZEND_STRL("payload"), &zpayload);
1739-
zend_update_property_string(Z_OBJCE(obj), Z_OBJ(obj), ZEND_STRL("rawpacket"), ZSTR_VAL(recv_buf));
1739+
zend_update_property_string(Z_OBJCE(obj), Z_OBJ(obj), ZEND_STRL("rawPacket"), ZSTR_VAL(recv_buf));
17401740
zend_string_efree(recv_buf);
17411741
ZEND_TRY_ASSIGN_REF_VALUE(arg2, &obj);
17421742
ZEND_TRY_ASSIGN_REF_STRING(arg5, ifrname);
@@ -1756,9 +1756,9 @@ PHP_FUNCTION(socket_recvfrom)
17561756
inet_ntop(AF_INET6, &ip->saddr, s, sizeof(s));
17571757
inet_ntop(AF_INET6, &ip->daddr, d, sizeof(d));
17581758
object_init_ex(&zpayload, ipv6packet_ce);
1759-
zend_update_property_string(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("ipsrc"), s);
1760-
zend_update_property_string(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("ipdst"), d);
1761-
zend_update_property_long(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("headersize"), sizeof(*ip));
1759+
zend_update_property_string(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("ipSrc"), s);
1760+
zend_update_property_string(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("ipDst"), d);
1761+
zend_update_property_long(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("headerSize"), sizeof(*ip));
17621762
// TODO completing
17631763
break;
17641764
}
@@ -1767,19 +1767,19 @@ PHP_FUNCTION(socket_recvfrom)
17671767
zval innerp;
17681768
ZVAL_NULL(&innerp);
17691769
object_init_ex(&zpayload, ethpacket_ce);
1770-
zend_update_property_string(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("macsrc"), ether_ntoa((struct ether_addr *)innere->h_source));
1771-
zend_update_property_string(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("macdst"), ether_ntoa((struct ether_addr *)innere->h_dest));
1772-
zend_update_property_long(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("headersize"), sizeof(*innere));
1770+
zend_update_property_string(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("macSrc"), ether_ntoa((struct ether_addr *)innere->h_source));
1771+
zend_update_property_string(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("macDst"), ether_ntoa((struct ether_addr *)innere->h_dest));
1772+
zend_update_property_long(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("headerSize"), sizeof(*innere));
17731773
zend_update_property(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("socket"), arg1);
17741774
zend_update_property(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("rawpacket"), &innerp);
17751775
zend_update_property(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("payload"), &innerp);
1776-
zend_update_property_long(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("ethprotocol"), 0);
1776+
zend_update_property_long(Z_OBJCE(zpayload), Z_OBJ(zpayload), ZEND_STRL("ethProtocol"), 0);
17771777
break;
17781778
}
17791779
default:
17801780
ZVAL_NULL(&zpayload);
17811781
zend_update_property(Z_OBJCE(obj), Z_OBJ(obj), ZEND_STRL("payload"), &zpayload);
1782-
zend_update_property_string(Z_OBJCE(obj), Z_OBJ(obj), ZEND_STRL("rawpacket"), ZSTR_VAL(recv_buf));
1782+
zend_update_property_string(Z_OBJCE(obj), Z_OBJ(obj), ZEND_STRL("rawPacket"), ZSTR_VAL(recv_buf));
17831783
zend_string_efree(recv_buf);
17841784
ZEND_TRY_ASSIGN_REF_VALUE(arg2, &obj);
17851785
ZEND_TRY_ASSIGN_REF_STRING(arg5, ifrname);
@@ -1791,10 +1791,10 @@ PHP_FUNCTION(socket_recvfrom)
17911791
RETURN_THROWS();
17921792
}
17931793

1794-
zend_update_property_string(Z_OBJCE(obj), Z_OBJ(obj), ZEND_STRL("macsrc"), ether_ntoa((struct ether_addr *)e->h_source));
1795-
zend_update_property_string(Z_OBJCE(obj), Z_OBJ(obj), ZEND_STRL("macdst"), ether_ntoa((struct ether_addr *)e->h_dest));
1794+
zend_update_property_string(Z_OBJCE(obj), Z_OBJ(obj), ZEND_STRL("macSrc"), ether_ntoa((struct ether_addr *)e->h_source));
1795+
zend_update_property_string(Z_OBJCE(obj), Z_OBJ(obj), ZEND_STRL("macDst"), ether_ntoa((struct ether_addr *)e->h_dest));
17961796
zend_update_property(Z_OBJCE(obj), Z_OBJ(obj), ZEND_STRL("payload"), &zpayload);
1797-
zend_update_property_string(Z_OBJCE(obj), Z_OBJ(obj), ZEND_STRL("rawpacket"), ZSTR_VAL(recv_buf));
1797+
zend_update_property_string(Z_OBJCE(obj), Z_OBJ(obj), ZEND_STRL("rawPacket"), ZSTR_VAL(recv_buf));
17981798
Z_DELREF(zpayload);
17991799
zend_string_efree(recv_buf);
18001800

‎ext/sockets/sockets.stub.php

+45-42
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
/** @generate-class-entries */
44

5+
namespace {
56
/**
67
* @var int
78
* @cvalue AF_UNIX
@@ -2168,50 +2169,52 @@ function socket_wsaprotocol_info_import(string $info_id): Socket|false {}
21682169

21692170
function socket_wsaprotocol_info_release(string $info_id): bool {}
21702171
#endif
2171-
2172-
#ifdef AF_PACKET
2173-
readonly class Packet
2174-
{
2175-
public int $headersize;
2176-
public ?string $rawpacket;
21772172
}
21782173

2179-
2180-
final readonly class EthernetPacket extends Packet
2181-
{
2174+
#ifdef AF_PACKET
2175+
namespace Socket {
2176+
readonly class Packet
2177+
{
2178+
public int $headerSize;
2179+
public ?string $rawPacket;
2180+
}
2181+
2182+
final readonly class EthernetPacket extends Packet
2183+
{
21822184
public Socket $socket;
2183-
public int $ethprotocol;
2184-
public string $macsrc;
2185-
public string $macdst;
2186-
public Ipv4Packet|Ipv6Packet|EthernetPacket|null $payload;
2187-
}
2188-
2189-
final readonly class TcpPacket extends Packet
2190-
{
2191-
public string $srcaddr;
2192-
public string $dstaddr;
2193-
public string $srcport;
2194-
public int $dstport;
2195-
}
2196-
2197-
final readonly class UdpPacket extends Packet
2198-
{
2199-
public string $srcaddr;
2200-
public string $dstaddr;
2201-
public string $srcport;
2202-
public int $dstport;
2203-
}
2204-
2205-
final readonly class Ipv4Packet extends Packet
2206-
{
2207-
public string $srcaddr;
2208-
public string $dstaddr;
2209-
public TcpPacket|UdpPacket|null $payload;
2210-
}
2211-
2212-
final readonly class Ipv6Packet extends Packet
2213-
{
2214-
public string $srcaddr;
2215-
public string $dstaddr;
2185+
public int $ethProtocol;
2186+
public string $macSrc;
2187+
public string $macDst;
2188+
public ?object $payload;
2189+
}
2190+
2191+
final readonly class TcpPacket extends Packet
2192+
{
2193+
public string $srcAddr;
2194+
public string $dstAddr;
2195+
public string $srcPort;
2196+
public int $dstPort;
2197+
}
2198+
2199+
final readonly class UdpPacket extends Packet
2200+
{
2201+
public string $srcAddr;
2202+
public string $dstAddr;
2203+
public string $srcPort;
2204+
public int $dstPort;
2205+
}
2206+
2207+
final readonly class Ipv4Packet extends Packet
2208+
{
2209+
public string $srcAddr;
2210+
public string $dstAddr;
2211+
public ?object $payload;
2212+
}
2213+
2214+
final readonly class Ipv6Packet extends Packet
2215+
{
2216+
public string $srcAddr;
2217+
public string $dstAddr;
2218+
}
22162219
}
22172220
#endif

0 commit comments

Comments
 (0)
Please sign in to comment.