A top politician has dropped his hardline opposition to gay marriage and gay adoption after being told his son was homosexual.

Senator Rob Portman's stance on gay rights was at one time unyielding enough to trigger a mass walkout by students at Michigan Law School after they petitioned for him to be banned from speaking at an event there.

But Ohio conservative Portman has travelled a long way since then after discovering that his university student son Will was gay.

He told CNN: "I've come to the conclusion that this is something that we should allow people to do - to get married, and to have the joy and stability of marriage that I've had for over 26 years. I want all of my children to have that, including our son, who is gay.

"My son came to Jane, my wife, and I, told us that he was gay, and that it was not a choice, and that it's just part of who he is, and that he'd been that way for as long as he could remember."

Portman admitted that he had no idea about his 21-year-old son's sexuality before the admission.

His unlikely conversion to the opposite side of the gay marriage debate was aided by an equally unlikely source - hawkish Republican and Iraq War advocate Dick Cheney. Cheney's daughter is a lesbian.

Portman sought the former vice-president's advice when mulling over whether to come out in favour of gay marriage.

Cheney told Portman: "Follow your heart."

"I spoke to him personally, I met him," Portman said.

"He was a good person to talk to because he also was surprised by the news, in that case, his daughter, who he loves very much. And it forced him to rethink the issue too, and over time, he changed his view on it.

"I followed his advice. I followed my heart," he said.

Portman said his son Will came out to the family two years ago - before Michigan university students mounted a protest against the politician. Portman explained that the delay in modifying his anti-gay stance was down to him dealing with the news.