| 1718 | self.default = None |
| 1719 | |
| 1720 | def getfield(self, pkt, s): |
| 1721 | fmt = _e(pkt.ndrendian) + ["I", "Q"][pkt.ndr64] |
| 1722 | remain, referent_id = NDRAlign(Field("", 0, fmt=fmt), align=(4, 8)).getfield( |
| 1723 | pkt, s |
| 1724 | ) |
| 1725 | |
| 1726 | # No value |
| 1727 | if referent_id == 0 and not self.EMBEDDED_REF: |
| 1728 | return remain, None |
| 1729 | |
| 1730 | # With value |
| 1731 | if self.EMBEDDED: |
| 1732 | # deferred |
| 1733 | ptr = NDRPointer( |
| 1734 | ndr64=pkt.ndr64, ndrendian=pkt.ndrendian, referent_id=referent_id |
| 1735 | ) |
| 1736 | pkt.deferred_pointers.append((ptr, partial(self.fld.getfield, pkt))) |
| 1737 | return remain, ptr |
| 1738 | |
| 1739 | remain, val = self.fld.getfield(pkt, remain) |
| 1740 | return remain, NDRPointer( |
| 1741 | ndr64=pkt.ndr64, ndrendian=pkt.ndrendian, referent_id=referent_id, value=val |
| 1742 | ) |
| 1743 | |
| 1744 | def addfield(self, pkt, s, val): |
| 1745 | if val is not None and not isinstance(val, NDRPointer): |